C# 用于识别转义字符的正则表达式问题
假设我们有以下字符串:C# 用于识别转义字符的正则表达式问题,c#,.net,regex,unicode,escaping,C#,.net,Regex,Unicode,Escaping,假设我们有以下字符串: @"Hello m\u00e9 name is Mat\u00bfQu" 我正在使用正则表达式: private static readonly Regex ESCAPING_REGEX = new Regex("\\+[^\"][a-zA-Z0-9]*", RegexOptions.Compiled); 但是,此正则表达式似乎不返回任何匹配项: MatchCollection matches = ESCAPING_REGEX.Matches(text); // ma
@"Hello m\u00e9 name is Mat\u00bfQu"
我正在使用正则表达式:
private static readonly Regex ESCAPING_REGEX = new Regex("\\+[^\"][a-zA-Z0-9]*", RegexOptions.Compiled);
但是,此正则表达式似乎不返回任何匹配项:
MatchCollection matches = ESCAPING_REGEX.Matches(text);
// matches.Count == 0
我尝试了正则表达式,它确实返回了我所寻找的两个匹配项
如何修复正则表达式以实现预期行为?(我们乐意接受任何改进建议。)您的正则表达式声明是错误的,因为您需要在匹配的开始处添加一个文本
+
。查看正则表达式引擎的正则表达式:
-匹配文本\+
+
-匹配除[^”]
“
-匹配0个或更多数字或拉丁字母字符[a-zA-Z0-9]*
Regex.Matches(str, @"\\+[^""][a-zA-Z0-9]*");
你会得到两个匹配<逐字字符串中的code>\\文字将与文字\
匹配,+
将被视为量词
实际上,您甚至不需要+
(因为它将匹配\\\\\
)和[^”“]
(除非在\
之后有一些”
,而这不是您想要匹配的),您可以使用
@"\\[a-zA-Z0-9]+"
要匹配子字符串(\
匹配\
,[a-zA-Z0-9]+
将匹配范围内的一个或多个字符)
您的字符串是逐字格式的吗?@casimirithippolyte我很抱歉我的无知。什么是逐字格式?您问题的根源!@casimirithippolyte哦,我明白了!我的字符串确实是逐字格式的。我将更新我的问题以反映这一点。我尝试删除逐字格式,但仍然无法使用逐字字符串作为您的模式n也是。@Stribizev“和+”将被视为一个量词。-这是正确的吗?@Greenfeets:是的。