我试图让正则表达式匹配包含第三个字符串的两个字符串之间的内容。我在使懒惰量词合作时遇到了麻烦,因为输入中存在多个这些字符串的实例,并且RegEx匹配了一些无用的东西,即:
Start...End...Start...End...Start...Middle...End
我实际上正在寻找(每场比赛只有一个开始和结束的实例):
Start...Middle...End
或Start...Center...End
我非常确定我需要使用前瞻/后视,但是当我从概念上理解它们时,将它们付诸实践确实很困难。我在这里:
/<Start[\s\S]*?(Middle|Center)[\s\S]*?End>/gm
答案 0 :(得分:2)
Start(?:(?!Start|End)[\s\S])*?(Middle|Center)[\s\S]*?End
^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅regex demo
<强>详情
Start
- 文字字符串(?:(?!Start|End)[\s\S])*?
- 任何char,0+重复,尽可能少,不是Start
或End
序列的起点(Middle|Center)
- 第1组:Middle
或Center
[\s\S]*?
- 任意0个字符,尽可能少End
- 文字字符串