Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 正则表达式匹配三个字符串的序列以及中间的文本_Regex - Fatal编程技术网

Regex 正则表达式匹配三个字符串的序列以及中间的文本

Regex 正则表达式匹配三个字符串的序列以及中间的文本,regex,Regex,我试图得到一个正则表达式来匹配包含第三个字符串的两个字符串之间的内容。我很难让惰性量词配合,因为输入中有这些字符串的多个实例,并且正则表达式匹配一些不有用的内容,例如: Start…End…Start…End…Start…Middle…End 我实际上在寻找什么(每场比赛只有一个开始和结束的实例): 开始…中间…结束或开始…中间…结束 我很确定我需要使用lookahead/lookback,但尽管我在概念上理解它们,但将它们付诸实践确实很困难。这就是我所处的位置: //gm利用: 见 详细信息

我试图得到一个正则表达式来匹配包含第三个字符串的两个字符串之间的内容。我很难让惰性量词配合,因为输入中有这些字符串的多个实例,并且正则表达式匹配一些不有用的内容,例如:

Start…End…Start…End…Start…Middle…End

我实际上在寻找什么(每场比赛只有一个开始和结束的实例):

开始…中间…结束
开始…中间…结束

我很确定我需要使用lookahead/lookback,但尽管我在概念上理解它们,但将它们付诸实践确实很困难。这就是我所处的位置:

//gm

利用:

详细信息

  • Start
    -文本字符串
  • (?:(?!Start | End)[\s\s])*?
    -任何字符,0+重复,尽可能少,这不是
    开始
    结束
    序列的起点
  • (中间|中间)
    -第1组:
    中间
    中间
  • [\s\s]*?
    -任何0+字符,尽可能少
  • End
    -文本字符串

只需稍加修改即可让正则表达式工作:
开始[\s\s]*?(中间|中心)?[\s\s]*?结束
-我将
(中间|中心)?
设置为可选。但我会使用
\b开始\b.*(中间|中间).*\bEnd\b
,然后打开
s
修饰符(点匹配换行符)。还要注意的是,它使用了
\b
,这样您就不会意外地捕捉到像
Endow
这样的内容。您添加了四个与您的问题无关的标记(、和)。我们在这个网站上认真对待标签,我们要求你只标记你的问题是关于什么的。我已经移除了。很抱歉,不会再发生了@与中间的字符串相匹配的CTWORD是强制性的,所以不幸的是它并没有切断它。@ Cak4我道歉,我误解了你的问题。维克托想好了,非常感谢!我找了好一阵子,但看起来我没能正确地表达我的问题。这个解释对我来说更清楚一点:
Start(?:(?!Start|End)[\s\S])*?(Middle|Center)[\s\S]*?End
     ^^^^^^^^^^^^^^^^^^^^^^^^^