在C#正则表达式中,是否少于和大于需要逃脱?

时间:2013-07-09 12:52:31

标签: c# regex

{C}正则表达式需要转义<>吗?我因为命名组而不确定,因为this regex cheat sheet列出了元字符部分。

html = Regex.Replace(html, "(<body.*?>)", replacement);

html = Regex.Replace(html, "(\<body.*?\>)", replacement);

3 个答案:

答案 0 :(得分:8)

永远不必在regexen中转义<>。它们具有特殊含义的唯一上下文是<(?之后。由于在(?转义<之后不允许直接使用常规字符,因此没有任何意义(即(?\<blabla\>)将会形成错误)。

如果您想匹配文字序列?<bla>,则需要转义?,而不是<以及所有其他情况<和{{} 1}}没有特殊意义。

答案 1 :(得分:1)

在此表达式中,它们不需要转义,因为它们不包含。如果您的表达式更像(?<body>.*?),那么它将捕获.*?并将其命名为body

答案 2 :(得分:0)

在这种情况下,它并不是绝对必要的,但是如果你确实逃避了,你肯定清楚你的意思,而在你从6个月开始审查你的代码或者其他人阅读代码时,逃避可能会引起对意义的怀疑。 / p>