使用正则表达式匹配PHP中相同句子中相同单词的组合


Using regex to match combination of words in the same in the same sentence in PHP

我想使用正则表达式从php中的短语中找到某些单词组合。我甚至无法让正则表达式部分正常工作。

句子应与同一句子中包含(中文/普通话/广东话)单词(精通/熟练/流利)的任何短语相匹配。因此,这将匹配"她中文流利"answers"他的普通话熟练程度非常好"

regex = (fluent)|(proficient)|(proficiency).*(chinese)|(mandarin)|(cantonese)

我可以让它与单词流利地匹配,但在被认为匹配之前,如何让它与同一句话中的两个单词匹配?

您的分组是错误的,应该是

(fluent|proficient|proficiency)[^.]*(chinese|mandarin|cantonese)

[^.](天真地)确保单词出现在同一个句子中。另外,不要忘记使用i标志来匹配标题大小写的单词,如Chinese

((fluent)|(proficient)|(proficiency)).*((chinese)|(mandarin)|(cantonese))

你需要放上传统的括号,如果你也想匹配整个句子,你需要做这样的

[.!?].*((fluent)|(proficient)|(proficiency)).*((chinese)|(mandarin)|(cantonese)).*[.!?]

如果顺序无关紧要,可以使用两个regexp,第一个用于第一组,第二个用于匹配第二组。比你匹配两次,如果两次都命中,你就成功了。

如果你正在处理一篇流利的文本,我会试着把它分成句子。