正则表达式转义问号和双引号

cko*_*nig 2 c# regex escaping

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

<a href="default.asp?itemID=987">
Run Code Online (Sandbox Code Playgroud)

其中itemID总是不同的.我正在使用C#,我希望使用正则表达式获取所有这些itemID.

起初我试过这个

"<a href=\"default.asp?itemID=([0-9]*)\">"
Run Code Online (Sandbox Code Playgroud)

但问号是保留字符.我考虑使用@运算符来禁用字符转义.但仍有一些双引号确实需要逃避.那么我会去

"<a href=\"default.asp\\?itemID=([0-9]*)\">"
Run Code Online (Sandbox Code Playgroud)

应该翻译(作为一个字符串)

<a href="default.asp\?itemID=([0-9]*)">
Run Code Online (Sandbox Code Playgroud)

但是Regex.Match方法没有成功.我在这里尝试了相同的正则表达式并且它有效.我究竟做错了什么?

Rap*_*aus 10

?并且.是正则表达式的特殊字符,但不能在字符串文件中"按原样"进行转义.因此,如果你放一个\字符串,那么字符串就错了,如果你不放\\,它将被视为正则表达式的"特殊字符".所以:

"@<a href=\"default\\.asp\\?itemID=([0-9]*)\">";
Run Code Online (Sandbox Code Playgroud)


spe*_*der 7

使用@operator时,您可以使用""重新获得双引号.

您还需要在正则表达式中转义某些特殊字符,在本例中为chars.

试试这个:

@"<a href=""default\.asp\?itemID=([0-9]*)"">"
Run Code Online (Sandbox Code Playgroud)