$text_expression = 'word1 word2 "phrase 1" "phrase 2" -word3 -word4 -"phrase \"hello\" 3" -"phrase 4"';


我想搜索包含(word1或word2或'短语1'或'短语2')并且不包含(word3或word4或'短语“ hello” 3'或'短语4')的字符串

与上面的$ text_expression等效的正则表达式将是什么?产生像

[包含] =>数组(

[0] => word1
[1] => word2
[2] => phrase 1



[不包含] =>数组(

[0] => word3
[1] => word4
[2] => phrase "hello" 3




ps:如果要简化字符串,我可以用另一种方式来表示(例如,使用其他字符代替引号和破折号)

最佳答案

可以使用正则表达式进行负匹配,但是非常复杂。也许您想先搜索第一部分,然后使用第二部分过滤结果。您使用|“或”正则表达式,因此首先查找“ word1 | word2 |短语1 |短语2”,然后删除与“ word3 | word4 |短语“ hello” 3 |短语4”匹配的结果(将单词转义)和加入|之前的短语可能是个好主意)。

关于php - 正则表达式基本帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3551507/

10-10 21:41