使用正则表达式捕获两个子字符串

时间:2014-05-22 16:22:46

标签: regex

这可能很容易。

但我想写一个以“DISTINCTION”开头的正则表达式,然后在“Distinction”再次开始之前直接结束(参见下面的数据)。

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

数据如下所示:

  

DISTINCTION XLII

     

第一章:关于上帝的无所不能,他说的原因是什么   是“无所不能的”,因为我们可以做许多事情,而他自己却做不到   做。第二章:上帝以何种方式表达能够做到的一切   的东西。第三章:考虑上帝的无所不能   根据两个行为。

     

DISTINCTION XLIII

     

第一章:对那些说上帝能做的人的一种侮辱   没什么,但是他会做什么和做什么。

     

DISTINCTION XLIV

     

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

     

DISTINCTION XLV

2 个答案:

答案 0 :(得分:1)

您需要negative lookahead assertion

DIST(?:(?!DIST).)*

DIST到下一个DIST之前的位置匹配(如果没有,则匹配字符串的结尾)。确保设置“dot-matches-all”选项(详细信息因您的正则表达式引擎而异)。

live on regex101.com

<强>解释

DIST      # Match "DIST".
(?:       # Start a group that matches...
 (?!DIST) # (unless we're at the start of the word "DIST")
 .        # any character.
)*        # Repeat as needed.

答案 1 :(得分:-2)

/DISTINCTION(.*?)DISTINCTION/

/DISTINCTION([^(DISTINCTION)]*?)DISTINCTION/