2

我有几个出现以下字符串的数据:

<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 方法没有成功。我在这里尝试了相同的正则表达式并且它有效。我究竟做错了什么?

4

3 回答 3

10

?并且.是正则表达式的特殊字符,但不能在字符串中“按原样”转义。所以如果你放 one \,那对于一个字符串是错误的,如果你不放\\,它会被当作正则表达式的“特殊字符”。所以 :

"@<a href=\"default\\.asp\\?itemID=([0-9]*)\">";
于 2012-05-30T15:00:44.327 回答
7

使用@operator 时,您可以使用“”重新获得双引号。

您还需要转义正则表达式中的某些特殊字符,在这种情况下,字符 .\?

试试这个:

@"<a href=""default\.asp\?itemID=([0-9]*)"">"
于 2012-05-30T14:54:11.350 回答
1

尝试转义点 '.' 性格与\.

于 2012-05-30T14:53:58.477 回答