gpt4 book ai didi

c# - 正则表达式匹配不匹配的内容

转载 作者:行者123 更新时间:2023-11-30 14:50:25 25 4
gpt4 key购买 nike

换句话说,我会将问题描述为“匹配 AB,匹配 foo,然后匹配 AB 之前不匹配”。

我可以使用以下正则表达式来完成:

AfooB|BfooA

我想知道是否有更有效的方法来做到这一点?我知道如何使用 "\" 和组号来引用捕获的组。在这种情况下,我想应用类似“不是捕获组中匹配的选项”之类的东西(并且仍然被限制为仅匹配该组的其他可能匹配项)。

我正在寻找比简单的 "AfooB|BfooA" 更有效的东西的原因是在我的情况下 "foo" 是一个很长的模式,我会尽可能减少重复。

最佳答案

在匹配第二个 AB 时,您可以使用带有反向引用限制的否定前瞻:

(A|B)foo(?!\1)(A|B)

基本上,(A|B) 匹配并捕获 值到第 1 组,然后 foo 匹配 foo, (?!\1) 确保后面的文本与捕获到第一组的文本不同,然后它只能匹配相反的值 (A |B)

参见 this regex demo

注意:如果 AB 是单个字符,请使用字符类:([AB])foo(?!\1)([AB ])

关于c# - 正则表达式匹配不匹配的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36858807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com