我的数据包含以下字符串的几种情况:
<a href="default.asp?itemID=987">
其中itemID始终不同。我正在使用C#,我希望使用正则表达式获取所有这些itemID。
起初我试过这个
"<a href=\"default.asp?itemID=([0-9]*)\">"
但问号是保留字符。我考虑使用@运算符来禁用字符转义。但仍有一些双引号确实需要逃避。那么我会去
"<a href=\"default.asp\\?itemID=([0-9]*)\">"
应该翻译(作为字符串)到
<a href="default.asp\?itemID=([0-9]*)">
但是Regex.Match方法没有成功。我尝试了同样的正则表达式here并且它有效。我究竟做错了什么?
答案 0 :(得分:8)
?
和.
是正则表达式的特殊字符,但不能在字符串文件中“按原样”进行转义。
因此,如果您放置一个\
,则字符串将出错,如果您不放置\\
,则将其视为正则表达式的“特殊字符”。所以:
"@<a href=\"default\\.asp\\?itemID=([0-9]*)\">";
答案 1 :(得分:6)
使用@operator时,您可以使用“”重新获得双引号。
您还需要在正则表达式中转义某些特殊字符,在本例中为chars。\?
试试这个:
@"<a href=""default\.asp\?itemID=([0-9]*)"">"
答案 2 :(得分:1)
尝试转义点'。' \.