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,如果出现的话。现实生活中的例子是什么?我真的不是这个意思,我会在一分钟内再次编辑这个问题。我希望我更新的答案足够清楚。如果没有,请告诉我。