正则表达式:模式重复捕获 - 在模式结尾处划分匹配 - 非捕获组和前瞻负面示例

时间:2016-07-28 08:30:10

标签: regex

我希望匹配文本的结尾,为此我必须匹配所有字符和换行符。

但我必须排除下一次捕获的开始!

我想要的是划分下一个模式开始的模式的结尾。

我试图替换

[^-]

类似

(?!-{2}\\*{3})

它不起作用!

所以我想要捕捉数字,我想捕捉整个段落(一些文字)( - *** x ***)

Regex capture

2 个答案:

答案 0 :(得分:2)

使用此正则表达式似乎有效:

--\*{3}([\d]*)\*{3}(((?!-).*\n)*)

第一捕获组:星星内的数字。

第二个捕获组:"标题"

之间的文本

第3个捕获组:该段的最后一行。

测试正则表达式的链接: https://regex101.com/r/xJ0gC6/1

答案 1 :(得分:-1)

我找到了我想要的东西! :)

--\*{3}([^!*]*)\*{3}((?:(?!-{2}\*{3})(?:\n|.))*)

我必须将我想要的和我不想要的东西分组。 为此我必须使用'非捕获组'和'负向前瞻':

(?!nowant)(?:want)

然后我必须使用'非捕获组'来聚合匹配:

(?:(?!nowant)(?:want))

之后,我添加量词'*'

(?:(?!nowant)(?:want))*

最后,我添加了一个'捕获组':

((?:(?!nowant)(?:want))*)

所以这是正则表达式:

((?:(?!-{2}\*{3})(?:\n|.))*)

您可以看到完整的正则表达式 here :
https://regex101.com/r/xJ0gC6/2