正则表达式只匹配完整的单词,但如果用引号括起来则不会

时间:2015-12-21 20:13:07

标签: php regex

我想只匹配完整的单词,但如果用引号

包装则不会

例如:... Init(&p, num); ... int Init(int **pp, int num) { *pp = malloc(num * sizeof(int)); ...

但不是:word

第一个可以与"word"

匹配

对于第二个,这是我得到的最接近的,问题是它阻止了匹配 /\bword\b/ "wordword",我只希望它不匹配"word"

"word"

3 个答案:

答案 0 :(得分:2)

\b(\w+(?!")|(?<!")\w+)\b

See it in action

如果未跟随或前面有"(使用negative lookarounds),而不是同时使用这两个字,则匹配该字词。

答案 1 :(得分:1)

您可以在PHP中使用此正则表达式:

"\w+"(*SKIP)(*F)|\b\w+\b

这将使用"word"指令每(*SKIP)(*F)失败,否则将匹配每个单词。

RegEx Demo

答案 2 :(得分:0)

尝试

/((\")*word$)|(^word(\")*)/g

https://regex101.com/r/aG5dA8/1