c# - 当存在重叠匹配项时,在 Regex 中优先选择一个匹配项?

标签 c# .net regex

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

这是我的测试用例。

正则表达式:

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

输入:

Soup > X > Alphabet
Alphabet Soup > X
X > Alphabet Soup

匹配:

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

第一个突出显示的匹配项(黄色)应该是 X > 而不是 > X 但我不确定如何在重叠的情况下优先考虑其中一个匹配项.

最佳答案

应该这样做:

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

低优先级备选方案之后的负面展望。当它找到 "> X",但后面有一个 ">" 时,应该跳过它以支持 "X >" .

关于c# - 当存在重叠匹配项时,在 Regex 中优先选择一个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670726/

相关文章:

c# - 将 ReflectionOnlyType 与 Type 进行比较的推荐方法是什么?

asp.net - 从 Controller 的操作中将 XML 作为 ActionResult 返回?

c# - 正则表达式查找由一组字母组成的单词

c# - WPF: ListView 在顶部而不是底部显示最近添加的项目

c# - Json.NET - 保留双/十进制数据类型

c# - 十进制舍入扩展错误 - 无法使用实例引用访问;用类型名称限定它

javascript - 正则表达式将匹配的最后一个单词捕获为一组

c# - 为什么要求 7 个字符的 C# 正则表达式接受 8 个字符?

c# - 如何使用正则表达式匹配从 A 到 B 的任何内容,其中 B 前面没有 C

c# - XmlDocument 和 XDocument 处理之间的区别 �