在常用单词删除模式中忽略连字符单词的regexp

2022-08-07 00:00:00 regex php preg-replace

我有一个正则表达式,它可以从字符串($input)中删除常用词($commonWords),我想对其进行调整,使其忽略连字符的词,因为这些词有时包含常用词。

return preg_replace('/('.implode('|',$commonWords).')/i','',$input);

谢谢


解决方案

尝试

return preg_replace('/(?<!-)('.implode('|',$commonWords).')(?!-)/i','',$input);

这会将negative lookaround个表达式添加到正则表达式的开头和结尾,以便只有在匹配之前或之后没有破折号时才允许匹配。

相关文章