2

是否需要在 C# 正则表达式<>转义?由于命名组,我不确定,因为这个正则表达式备忘单将它们列在元字符部分。

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

或者

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

3 回答 3

11

永远不需要逃避<>在正则表达式中。它们具有特殊含义的唯一上下文是如果<出现在 之后(?(?而且由于在转义后不允许直接使用常规字符,因此<没有任何意义(即(?\<blabla\>)格式错误)。

如果要匹配文字序列?<bla>,则需要转义?,而不是<and 在所有其他情况下<,并且>没有特殊含义。

于 2013-07-09T13:17:27.960 回答
1

在这个表达式中,它们不需要转义,因为它们没有被一个单词包裹。如果您的表达方式更像,(?<body>.*?)那么它会做的就是捕捉.*?并命名它body

于 2013-07-09T12:55:55.033 回答
0

在这种情况下,这并不是绝对必要的,但是如果您确实逃脱了,那么您的意思肯定很清楚,而当您在 6 个月后查看您的代码或其他人阅读它时,不逃脱可能会引起对含义的怀疑。

于 2013-07-09T12:58:25.330 回答