繁体   English   中英

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

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

我想使用正则表达式从php中的短语中找到单词的某些组合。 我什至不能使正则表达式部分起作用。

该句子应与在同一句子中使用(中文/普通话/广东话)单词(熟练/熟练/流利)的任何短语匹配。 因此,它将与“她流利的中文”相匹配。 和“他的普通话水平很好”

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,第一个用于第一组,第二个用于匹配第二个。 比两次比赛都成功,如果两次都击中,那就成功了。

如果您要处理流利的文本,我会尝试将其拆分为句子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM