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


Finding two words anywhere in text with regular expression

无论如何我都不是正则表达式方面的专家!我了解regex是如何组合在一起的基础知识,但是通过正则表达式,我可以搜索可能出现在一段文本中的任何地方的两个单词吗?
比如hot和weather。可以写成:天气很热。在炎热的天气天气变得更热了

是否有可能创建一个正则表达式来拾取所有三种场景,但不是(例如)在恶劣天气下拍摄的照片?

任何帮助将不胜感激-我在PHP5.6工作,顺便说一下,有没有更好的方法来做到这一点,我还没有想到?

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

例如

:('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)

唯一的问题是它会错过结尾,如sillysilliestseesaw,而不添加额外的逻辑来查看原始单词。