Php 基本正则表达式帮助

Php 基本正则表达式帮助,php,regex,Php,Regex,我想搜索包含(word1或word2或“短语1”或“短语2”)但不包含(word3或word4或“短语“hello”3或“短语4”)的字符串 与上面的$text_表达式等价的正则表达式是什么?它产生了一个类似于 [包含]=>数组( ) [不包含]=>数组( ) ps:如果字符串更简单的话,我可以用另一种方式来表达它(例如,使用其他字符而不是引号和破折号)我可以,我也愿意,但是为了你的利益,我可以谦虚地建议你花2个小时在正则表达式教程上吗?它将很快得到回报。如果您坚持使用正则表达式解决方案,您可以

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

与上面的$text_表达式等价的正则表达式是什么?它产生了一个类似于

[包含]=>数组(

) [不包含]=>数组(

)


ps:如果字符串更简单的话,我可以用另一种方式来表达它(例如,使用其他字符而不是引号和破折号)

我可以,我也愿意,但是为了你的利益,我可以谦虚地建议你花2个小时在正则表达式教程上吗?它将很快得到回报。

如果您坚持使用正则表达式解决方案,您可以使用

(?=…)
为正向前瞻;它断言给定的模式可以匹配<代码>(?!…)为负前瞻;它断言给定的模式不能匹配

(this | that | somethingelse)

该模式提供以下匹配项():

我想要你

我需要你

nono我不想要你

noway-noway-noway

我现在不需要你

你想要我,尽管


请找到一个好的解析库。。。这个正则表达式太复杂,无法安全使用(主要是因为字符串转义和转义)。你可以用一个例子


另外,我假设您想要解析实际的查询
$string
,而不是生成一个正则表达式来过滤问题中描述的文本。

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

我可以谦虚地承认我的大脑无法使用regex=)?请帮忙,我保证我会花2小时做一个开源项目…投票通过。如果你是一名程序员,你会多次遇到正则表达式。这是一个相当基本的问题。如果有人在这个级别上“无法使用正则表达式”,并且不想更改它,那么现在是考虑他们是否能够进行编程的好时机。请不要把这当成个人问题:)如果你真的进行编程,你很快就会比现在更难编写正则表达式,所以现在是开始使用正则表达式的好时机;)@Devrim我的意思不是回答这个问题。我宁愿帮你学钓鱼,给你一条鱼。正则表达式教程将帮助您在10分钟内匹配单词,然后应用Radomir Dopieralski的解决方案。用剩下的110分钟掌握窍门。您还可以通过使用strpos()检测匹配/负匹配来完全避免正则表达式。@louisgab这不会结束,让我们在这里停止。是我懒惰还是你根本不知道?如果每个java问题的答案都是“读一本java书”,或者花时间上大学,那么obv stackoverflow就不可能存在。另一方面,也有人把那些通过谷歌搜索很容易找到的愚蠢的东西放进去。我想我问了一个关于regex的具体问题,但你们发现了“我不能处理regex”,老实说,我认为你们不能解决这个问题——因为我擅长regex。我知道像u和viraptor这样的年轻人会吹嘘他们所知道的。都很好。关于鱼的事已经够多了。请不要以为我只是问b/c我很懒。。。我尝试了50个其他变体,但在这些难看的字符之间有些不起作用。在Perl中,由于正则表达式中的代码断言,这将更容易实现。您可以(在Perl中)在匹配期间设置变量中的标志,并在匹配后简单地测试变量:/。。。word1(?{++$word_1;})../,但这在PHP中不起作用。所以看起来你必须对字符串进行多次传递。我不想坚持使用正则表达式解决方案,你有什么想法吗?实际上,我正在寻找能够过滤文本的正则表达式。。现在检查PEG,看起来很有趣…啊-在这种情况下,PEG不是你应该使用的东西。如果您只是想过滤文本,则效果会更好。
$text_expression = 'word1 word2 "phrase 1" "phrase 2" -word3 -word4 -"phrase \"hello\" 3" -"phrase 4"';
[0] => word1 
[1] => word2 
[2] => phrase 1 
[0] => word3 
[1] => word4 
[2] => phrase "hello" 3
^(?=.*(want|need|desired))(?!.*(noway|dontwant|nonono)).*$