【问题标题】:Regex for "but does not contain" [duplicate]“但不包含”的正则表达式 [重复]
【发布时间】:2020-08-02 03:51:04
【问题描述】:

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

aabbaabbccbbaabbdd

我要查找的是:以 aa 开头、在下一次出现 aa 或 dd 之前结束并包含 cc 的文本。我认为解决方案是 aa(?!aa).*?cc.*?(?=(aa|dd)),但它选择了 aabbaabbccbb,但我不想包括那个初始的 aabb。显然,对于我的真正任务,我并没有真正搜索这样的字母对,所以我不想使用搜索单个字符。什么会找到我需要的东西?提前致谢。

更新:

在给定不同的搜索字符串的情况下,粗体字是我想要找到的内容:

aaxyzccabcdaawhateveraablablaccblabladd

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

【问题讨论】:

  • 是字符串,总是相同字母的序列
  • (?!^aa)\w* 防止字符串开头的“aa”匹配
  • 你想要的是this吗?

标签: .net regex


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多