我在下面有这个正则表达式,从字符串($commonWords
)中删除常见的整个单词($input
),我想调整它以便
删除以连字符('-')
开头的字词,但不删除双引号或单引号内的字词(例如谷歌搜索标签中的否定搜索)
return preg_replace('/\b('.implode('|',$commonWords).')\b/i','',$input);
感谢
答案 0 :(得分:1)
如果只你的“整个单词”被“免除”的引号所包围(而不是整个句子在引号中),那么使用环视很容易做到断言:
/\b(?<!['"])('.implode('|',$commonWords).')\b(?!['"])/i
^^^^^^^^^ ^^^^^^^^
您可以采取额外步骤,通过反向引用匹配两个引号:
/\b(?<!(['"]))('.implode('|',$commonWords).')\b(?!\1)/i
^^^^^^^^^^^ ^^^^^^