我希望我的正则表达式匹配 ?ver
和 ?v
,但不 ?version
这是我目前所拥有的:$parts = preg_split( "(\b\?ver\b|\b\?v\b)", $src );
我认为问题可能在于我如何转义 ?
。
最佳答案
您的模式试图匹配前面带有单词 char 的 ?
,但由于没有字符,所以您没有匹配。
使用以下模式:
'/\?v(?:er)?\b/'
参见 regex demo
图案细节:
\?
- 文字?
字符v(?:er)?
-v
或ver
\b
- 单词边界(即必须有一个非单词字符(不是数字、字母或_
)或之后的字符串结尾v
或ver
).
请注意,您不需要第一个(初始)单词边界,因为它已经存在于 ?
(非单词字符)和 v
(单词字符)。如果 ?
是可选的,您将需要一个单词边界。
关于php - 正则表达式匹配精确的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45165130/