C# 正则表达式转义问号和双引号
我有以下字符串多次出现的数据:C# 正则表达式转义问号和双引号,c#,regex,escaping,C#,Regex,Escaping,我有以下字符串多次出现的数据: <a href="default.asp?itemID=987"> 成功了。我做错了什么 尝试用\”转义点“.”。使用@运算符时,可以用“”重新获得双引号 您还需要转义正则表达式中的某些特殊字符,在本例中是字符。\ 试试这个: @"<a href=""default\.asp\?itemID=([0-9]*)"">" @“ ?和是正则表达式的特殊字符,但不能在字符串中“按原样”转义。 因此,如果您放入一个\,字符串将是错误的,如果您不放
<a href="default.asp?itemID=987">
成功了。我做错了什么 尝试用\”转义点“.”。
使用@运算符时,可以用“”重新获得双引号
您还需要转义正则表达式中的某些特殊字符,在本例中是字符。\
试试这个:
@"<a href=""default\.asp\?itemID=([0-9]*)"">"
@“
?
和
是正则表达式的特殊字符,但不能在字符串中“按原样”转义。
因此,如果您放入一个\
,字符串将是错误的,如果您不放入\\
,它将被视为regexp的“特殊字符”。因此:
"@<a href=\"default\\.asp\\?itemID=([0-9]*)\">";
“@”;
“我想用正则表达式获取所有这些itemid。”你不应该这样做。改用HTMLAgilityPack。这永远不会过时:在所有这些讨论之后,人们仍然继续用正则表达式解析HTML。你知道,那些人是对的。你不应该用正则表达式解析HTML。也就是说,我看不出有什么理由不建议另一种选择,并试图帮助你。哇,似乎我在这里碰上了一根理智的神经。但我并不是在解析一些随机的HTML,在那里一切都可能发生。我只需要替换一些由WYSIWYG编辑器创建并存储在数据库中的链接。比预期的少一个。因为\是转义字符,所以要获得实际的反斜杠,需要\\
和?
都有特殊的含义,因此也需要进行转义。是否仍有太多的黑斜杠?做记号这是你知道的@字符串。哦,我很确定你需要在.NET正则表达式中编写\.
,尽管我可能弄错了。所以。。。在字符串的中间,我们正在寻找完全匹配的?正确的?那是怎么逃脱的?在我看来(以及我的测试),\变成\\和?变成\?给予\\\\。我错了吗?OP说文本是
省略@,这就是解决方案。谢谢。
<a href="default.asp\?itemID=([0-9]*)">
@"<a href=""default\.asp\?itemID=([0-9]*)"">"
"@<a href=\"default\\.asp\\?itemID=([0-9]*)\">";