正则表达式匹配字符串但排除子字符串的实例

时间:2012-08-13 18:49:38

标签: regex string substring

例如..

示例文字:<tag>AandBandCandD</tag>

我需要匹配tag></tag之间发生的所有事情,不包括“和”的任何实例,所以结果是:

  

“ABCD”

2 个答案:

答案 0 :(得分:2)

我分两步完成:

  • 首先提取标签的内容。
  • 接下来用空字符串替换所有出现的and

正则表达式不是两个步骤的正确工具:

  • 使用HTML解析器可以更好地实现第一步。
  • 第二步不需要正则表达式的复杂性。一个简单的字符串替换将起作用。

<强>更新

如果你被迫使用单个正则表达式,那么它可能是不可能的。

答案 1 :(得分:1)

无论如何,这是你可以尝试的。

(?<=<tag>)(?:((?!and).)+(?:and)?)*(?=</tag>)

细分可读性:

(?<=
  <tag>
)
(?:
  (
    (?!
      and
    )
    .
  )+
  (?:and)?
)*
(?=
  </tag>
)

我很确定这会产生一些等于and之间文本的匹配。但是,如果不知道所讨论的确切正则表达式语言,有很多东西可以通过稍微不同来打破这一点。