Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 正则表达式:模式重复捕获–;在模式末尾划界匹配-非捕获组和lookaheads反面示例_Regex - Fatal编程技术网

Regex 正则表达式:模式重复捕获–;在模式末尾划界匹配-非捕获组和lookaheads反面示例

Regex 正则表达式:模式重复捕获–;在模式末尾划界匹配-非捕获组和lookaheads反面示例,regex,Regex,我希望匹配文本的结尾,为此我必须匹配所有字符和换行符 但我必须排除下一次捕获的开始 我想要的是在下一个模式开始的地方划定模式的结尾 我试着替换 [^-] 大概是 (?!-{2}\\*{3}) 它不起作用 所以我想捕捉数字,我想捕捉(-****x***)之间的整个段落(一些文本) 我找到了我想要的东西!:) 我必须把我想要的和我不想要的分组。 为此,我必须使用“非捕获组”和“消极前瞻”: (?!nowant)(?:want) 然后我必须使用“非捕获组”来放弃匹配: (?:(?!nowant)

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

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

我想要的是在下一个模式开始的地方划定模式的结尾

我试着替换

[^-]
大概是

(?!-{2}\\*{3})
它不起作用

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


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

我必须把我想要的和我不想要的分组。 为此,我必须使用“非捕获组”和“消极前瞻”:

(?!nowant)(?:want)
然后我必须使用“非捕获组”来放弃匹配:

(?:(?!nowant)(?:want))
在后面,我添加量词'*'

(?:(?!nowant)(?:want))*
最后,我添加了一个“捕获组”:

((?:(?!nowant)(?:want))*)
这里是正则表达式:

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

您可以看到完整的正则表达式,使用此正则表达式似乎可以:

--\*{3}([\d]*)\*{3}(((?!-).*\n)*)
第一组:星内的数字

第二捕获组:“标题”之间的文本

第三组:段落的最后一行

已测试与正则表达式的链接:

您能举例说明更改后想要的匹配项是什么吗?您想要什么还不清楚。你能澄清一下你的预期输入和预期输出是什么吗?我只是想抓住整个“一些文本”,整个段落。坦克匹配不同于捕获,你的整个故事都是关于替换的。你介意重新表述你的问题吗?事实上,在我的例子中,regex101只计算168个步骤,而这个解决方案计算2317个步骤(编辑前为2334个)。因此,它几乎是“快”的14倍:@DidierAupest:步骤的数量并不直接意味着一个模式是快还是慢,但这里的差异肯定很大。我进行了测试,我认为Didier的答案不是最好的,对不起。任何人都能解释我为什么有一个负引号?
--\*{3}([\d]*)\*{3}(((?!-).*\n)*)