正则表达式生成未转义字符串的异常

本文关键字:字符串 异常 转义字符 转义 正则表达式 | 更新日期: 2023-09-27 17:53:22

我试图做一个简单的程序来验证字符串对正则表达式,但我得到一个异常。下面是我的代码:

String exp = "^''d''d*$";
Regex r = new Regex(Regex.Unescape(exp));
if (r.IsMatch(""))
{
    Response.Write("strings matches");
}
else
{
    Response.Write("strings does not matches");
}

但是这段代码产生了异常:

exception.Message = "parsing '"^''d''d*$'" - Unrecognized escape sequence ''d."
exception.GetType() ={Name = "ArgumentException" FullName = "System.ArgumentException"} System.Type {System.RuntimeType}
谁能告诉我为什么会这样?

正则表达式生成未转义字符串的异常

这正是文档要用到的Regex。Unescape说。当遇到无法转换的转义序列(如'd)时,它抛出一个Argument异常。

Regex.Unescape方法将字符串转义序列转换为适当的字符本身,例如'n转换为0x0A

这里不需要使用Regex.Unescape方法

String exp = "^''d''d*$";
Regex r = new Regex(exp);

就可以了。

或逐字版本:

String exp = @"^'d'd*$";
Regex r = new Regex(exp);

使用@使字符串不像这样使用转义字符'

String exp = @"^''d''d*$";