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

本文关键字:正则表达式 转义 | 更新日期: 2023-09-27 18:35:41

我有以下字符串的几个八进制的数据:

<a href="default.asp?itemID=987">

其中的项 ID 始终不同。我正在使用 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方法没有成功。我在这里尝试了完全相同的正则表达式,它奏效了。我做错了什么?

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

?. 是正则表达式的特殊字符,但不能在字符串 litteral 中"按原样"转义。所以如果你放一个',它对于一个字符串来说是错误的,如果你不放'',它就会被当作正则表达式的"特殊字符"。所以:

"@<a href='"default''.asp''?itemID=([0-9]*)'">";

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

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

试试这个:

@"<a href=""default'.asp'?itemID=([0-9]*)"">"

尝试使用'.转义点"."字符