Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,这可能真的很容易 但是我想写一个正则表达式,它从单词“differention”开始,然后在单词“differention”再次开始之前直接结束(参见下面的数据) 我当前的正则表达式是this(DIST[^DIST]*),但当然,只要引擎找到“D”、“I”、“S”或“T”,它就会找到匹配项。所以我只能在找到“DIST”时停止搜索?谢谢你的帮助 数据如下所示: 区别四十二 第一章:关于上帝的全能,他为什么要这样说 “无所不能”,因为我们可以做很多事情,而他自己却做不到 做第二章:神以什么样的方式说

这可能真的很容易

但是我想写一个正则表达式,它从单词“differention”开始,然后在单词“differention”再次开始之前直接结束(参见下面的数据)

我当前的正则表达式是this(DIST[^DIST]*),但当然,只要引擎找到“D”、“I”、“S”或“T”,它就会找到匹配项。所以我只能在找到“DIST”时停止搜索?谢谢你的帮助

数据如下所示:

区别四十二

第一章:关于上帝的全能,他为什么要这样说 “无所不能”,因为我们可以做很多事情,而他自己却做不到 做第二章:神以什么样的方式说能做所有的事 东西。第三章:认为上帝的全能 根据两个法案

区别四十三

第一章:对那些说上帝可以做到的人的谩骂 什么都没有,只有他的意志和行动

区别四十四

第一章:上帝是否能创造出比他所创造的更好的东西 它,和/或以另一种和/或更好的方式,比他有。第二章: 上帝是否总能做他能做的一切

区别XLV

为此,您需要一个:

DIST(?:(?!DIST).)*
DIST
匹配到下一个
DIST
之前的位置(如果没有,则匹配到字符串末尾)。确保您设置了“点匹配所有”选项(详细信息因您的正则表达式引擎而异)

看到了

说明:

DIST#匹配“DIST”。
(?:#组建一个与。。。
(?!DIST)#(除非我们在单词“DIST”的开头)
.#任何角色。
)*#根据需要重复。


您可能会发现lookarounds()很有用。这真的需要到处看看吗?难道没有把“DIST”看成是“D、I、S、t”而不是“D、I、S、t”
[^(区别)]
意思是“除了
D
I
S
t
N
C
O
)以外的任何字符。”。此外,这个正则表达式只会找到其他匹配项,它永远不会找到最终匹配项;他们完全匹配。
/DISTINCTION(.*?)DISTINCTION/
/DISTINCTION([^(DISTINCTION)]*?)DISTINCTION/