【发布时间】:2021-09-26 06:43:39
【问题描述】:
正则表达式
m/(b?)-/ [here no g flag]
示例输入
a-b-
当前匹配
-
想要的匹配
b-
我的疑问是为什么没有全局标志 b- 不匹配
(b?) 可以选择匹配文字 b
"-" 匹配文字 -
最后,我只得到-这个?
$ echo "a-b-" | sed 's/\(b\?\)-/x\u\1/g'
axxB
$
$ echo "a-b-" | sed 's/\(b\?\)-/x\u\1/'
axb-
在最后一次 sed 替换中,- 的第一次出现被 x 替换,b- 呢
【问题讨论】:
-
请在您的问题中添加适当的问题陈述。输入是什么?您要在该输入中匹配什么?
-
如果没有全局标志,正则表达式将只返回第一个匹配项。由于您的正则表达式是
b?-和可选的b,因此它首先从输入a-b-返回-。当有全局标志时,它将返回 2 个匹配项['-', 'b-'] -
嗨@TimBiegeleisen,我想使用“b?-”这个正则表达式匹配“b-”字符串。请看这个regex101.com/r/8GCQjr/1
-
请在您的问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无评论)。
-
@Cyrus 我会这样更新。
标签: php regex regex-group regexp-replace