使用正则表达式在文本中的任意位置查找两个单词

时间:2014-08-16 23:16:55

标签: php regex

我不是任何想象力的正则表达专家!我理解正则表达式如何结合在一起的基础知识,但通过正则表达式,我可以搜索可能出现在一段文本中的两个单词吗? 即热和天气这两个词。可以写成: 这天气好热 在炎热的天气里 天气变得更加温暖

是否有可能创建正则表达式以获取所有三种情况,但不是(例如)图片是在恶劣天气下拍摄的?

任何帮助都会受到赞赏 - 我在PHP5.6中工作的方式是替代方案是否有更好的方法来做到我还没有想过?

1 个答案:

答案 0 :(得分:1)

如果您只需要这两个单词,则可以使用可选的单词结尾列表进行正则表达式搜索。

例如: (\bweather\b.*hot(ter|test)?\b|\bhot(ter|test)?\b.*\bweather\b)

但是如果您需要从用户的输入构建正则表达式,您可能希望获得可能结尾的完整列表: (s|er|est|ier|iest|ter|test|etc|etc)?

实施例: (\bweather(s|er|est|ier|iest|ter|test|etc|etc)?\b.*hot(s|er|est|ier|iest|ter|test|etc|etc)?\b|\b(s|er|est|ier|iest|ter|test|etc|etc)?\b.*\bweather(s|er|est|ier|iest|ter|test|etc|etc)?\b)

唯一的问题是它会错过像silly silliestsee saw这样的结尾而不添加额外的逻辑来查看原始单词。