gpt4 book ai didi

正则表达式:查找一位数

转载 作者:行者123 更新时间:2023-12-04 01:21:35 24 4
gpt4 key购买 nike

我需要找到所有一位数的文本。

我的代码:

$string = 'text 4 78 text 558 my.name@gmail.com 5 text 78998 text';
$pattern = '/ [\d]{1} /';

(结果:4 和 5)

一切正常,只是想问使用空格是否正确?
也许还有其他方法可以区分一位数。

谢谢

最佳答案

首先,[\d]{1}相当于 \d .

至于你的问题,最好使用零宽度断言,比如 lookbehind/lookahead或字边界( \b )。否则,您将无法匹配连续的单个数字,因为第二个数字的前导空格将匹配为第一个数字的尾随空格(并且不会找到重叠匹配项)。

这是我将如何写这个:

(?<!\S)\d(?!\S)

这意味着“仅当数字之前没有非空白字符且其后没有非空白字符时才匹配数字”。

我使用了双重否定,如 (?!\S)而不是 (?=\s)这样您还将匹配字符串开头或结尾的单个数字。

我更喜欢这个而不是 \b\d\b对于您的示例,因为看起来您真的只想在数字被空格包围时进行匹配,而 \b\d\b将匹配 45在像 192.168.4.5 这样的字符串中

要在末尾允许标点符号,您可以使用以下内容:

(?<!\S)\d(?![^\s.,?!])

将您希望在数字之后允许的任何其他标点字符添加到字符类(在方括号内,但确保它在 ^ 之后)。

关于正则表达式:查找一位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com