【问题标题】:Escaping the XML Angle Bracket within a Regex在正则表达式中转义 XML 尖括号
【发布时间】:2011-02-05 10:39:13
【问题描述】:

我一直在使用 ICSharp TextEditor 控件,它使用 XML 文件通过 C# 正则表达式引擎计算出不同的语法高亮部分(字符串、cmets 等)。

所以我一直在使用这个正则表达式来匹配和弦符号(来自这个问题):

\b[A-G](?:add|maj|j|m|\+|b|\#|sus|\d|°)*(?:\b|(?<=\#))

问题是,

\b[A-G](?:add|maj|j|m|\+|b|\#|sus|\d|°)*(?:\b|(?&lt=\#))

问题是,执行此操作后,程序由于无效的正则表达式而崩溃。我已经缩小了范围,确定是 &lt 导致了问题。

那么有没有其他方法可以在转义

【问题讨论】:

  • 你肯定知道它的 < (末尾有分号)而不仅仅是 &lt

标签: c# xml regex avalonedit


【解决方案1】:

&amp;lt; 的 XML 实体是 &amp;lt; 而不是 &amp;lt

【讨论】:

  • 你为什么改变你原来的回复,我觉得(? vs (?:的事情很有帮助。
  • 对不起,只是我使用的是Firefox beta,无法添加代码标签。我后来解决了这个问题,所以你的最后一个答案不相关。不过感谢这个。
【解决方案2】:

在第一个正则表达式中,标记 (?&lt;=\#) 是一个“正向后视”,表示在比赛的这一点上,您想回头看到一个文字磅符号(已被转义,但不需要是,# 不是正则表达式元字符)。

如果您打算改为非捕获组,那么您想要的是(?: *pattern* ),即:(?:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多