正则表达式为“但不包含”

时间:2020-08-02 03:51:04

标签: .net regex

在.NET中,我需要一个正则表达式来找到一个字符串,而不是另一个。考虑要搜索的文本,加粗的部分是我要查找的内容:

aabb aabbccbb aabbdd

我要查找的是:以aa开头,在下次出现aa或dd之前结束并且包含cc的文本。我以为解决方案将是aa(?!aa)。*?cc。*?(?=(aa | dd)),但这选择了aabbaabbccbb,但我不想包括该初始aabb。显然,对于我的实际任务,我并不是真正地搜索这样的字母对,因此我不想使用搜索单个字符。什么会找到我需要的东西?预先感谢。

更新:

在不同的搜索字符串的情况下,我想用粗体显示的内容:

aaxyzccabcd aawhatever aablablaccblabla dd

我需要的搜索规则是:查找以aa开头,在下一个aa或dd(以先到者为准)之前结束并且包含cc的文本。

1 个答案:

答案 0 :(得分:0)

我以不同的方式提出了这个问题,并得到了一个有效的答案,该答案可以在https://stackoverflow.com/a/63169037/1250500上找到。该解决方案涉及两个零宽度的负超前断言,每个断言都在一个非捕获组中。非常令人印象深刻,我很高兴它不需要平衡组。