Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何要求re-expression在不从头开始的情况下进行最小匹配_Regex - Fatal编程技术网

Regex 如何要求re-expression在不从头开始的情况下进行最小匹配

Regex 如何要求re-expression在不从头开始的情况下进行最小匹配,regex,Regex,我想在A+C+A+B中匹配A+B,我使用了如下表达式: A.+?B 但是,上面的重新表达仍然匹配A+C+A+B,而不是A+B。看来搜索总是从头开始。有没有办法防止这种情况 编辑:我只是展示了一个简单的工作示例,实际字符串可能是AAA(blabla没有AAA或BBB)CCC-AAA(balbla没有AAA或BBB)BBB,我想匹配AAA(balbla没有AAA或BBB)BBB 编辑:更清楚地说,我希望字符串中的所有匹配项都不能包含子匹配项。如前所述:A.+-B匹配“A+C+A+B”,但A+C+A

我想在
A+C+A+B
中匹配
A+B
,我使用了如下表达式:

A.+?B
但是,上面的重新表达仍然匹配
A+C+A+B
,而不是
A+B
。看来搜索总是从头开始。有没有办法防止这种情况


编辑:我只是展示了一个简单的工作示例,实际字符串可能是
AAA(blabla没有AAA或BBB)CCC-AAA(balbla没有AAA或BBB)BBB
,我想匹配
AAA(balbla没有AAA或BBB)BBB


编辑:更清楚地说,我希望字符串中的所有匹配项都不能包含子匹配项。如前所述:
A.+-B
匹配“A+C+A+B”,但
A+C+A+B
包含一个子匹配,即
A+B
。所以这不是我想要的。

您应该使用环顾四周,以确保我们不会在通往
BBB
的道路上捕获
AAA
,也不会捕获
BBB

AAA(?:(?!AAA|BBB).)*BBB

请参阅(我们还可以在
AAA
BBB
是单词的情况下添加单词边界-
\bAAA\b(?:(?!\b(?:AAA | BBB)\b)。*\bbbbbbb\b

我只是展示一个简单的工作示例。我不是说处理字符串实际上是由
+
连接起来的。我想他还想匹配A-B,如果出现的话。现实生活中的例子是什么?我真的不是这个意思,我会在一分钟内再次编辑这个问题。我希望我更新的答案足够清楚。如果没有,请告诉我。