当存在重叠匹配时,在正则表达式中匹配一个匹配?

时间:2009-03-22 08:56:25

标签: c# .net regex

我有一个匹配 x OR y 条件的正则表达式。有时这些匹配重叠,我想优先考虑其中一个条件。

这是我的测试用例。

正则表达式:

X[^\w]*\>|\>[^\w]*X

输入:

  

汤> X>字母
  字母汤> X
  X>字母汤

匹配

  

Highlighted match results http://i.friendfeed.com/b55db94551503bf13d16f944fc56d9ff56676b4f

第一个突出显示的匹配(黄色)应为 X> ,而不是> X 但我不确定如何优先考虑给出重叠的其中一个匹配。

1 个答案:

答案 0 :(得分:8)

这应该这样做:

X[^\w]*>|>[^\w]*X(?![^\w]*>)

低优先级替代后的负面预测。如果找到"> X",但后面有" >",则应跳过"X >"