C# 为什么;[“与[a-zA-Z]匹配]
输出: 种皮 试验[ 测试BC# 为什么;[“与[a-zA-Z]匹配],c#,regex,character-class,C#,Regex,Character Class,输出: 种皮 试验[ 测试B 问题:为什么在输出中测试[?字符类[a-zA-Z]应该只匹配字母字符a到Z和a到Z。因为[属于a-Z,所以将char类中的a-Z更改为a-Z Regex oRegex = new Regex(@"test[a-zA-z]"); string st = @"this is a test1 and testA and test[abc] another testB and test(xyz) again."; foreach(Match match in oRegex.
问题:为什么
在输出中测试[
?字符类[a-zA-Z]应该只匹配字母字符a到Z和a到Z。因为[
属于a-Z
,所以将char类中的a-Z
更改为a-Z
Regex oRegex = new Regex(@"test[a-zA-z]");
string st = @"this is a test1 and testA and test[abc] another testB and test(xyz) again.";
foreach(Match match in oRegex.Matches(st))
{
Console.WriteLine(match.Value);
}
您的正则表达式中有一个输入错误。
[a-zA-z]
应该是[a-zA-z]
字符
[
位于A
和z
字符之间。z在您的情况下是打字错误。更改此[A-zA-z]
Regex oRegex = new Regex(@"test[a-zA-Z]");
谢谢大家指出错误。在某种程度上,错误帮助我理解了a-z范围。这有助于我进一步解释为什么“[”包含在A-z范围内。@Blorgbeard我是第一个发布此答案的人。为什么您的帖子在单击最旧的选项卡时首先显示?@AvinashRaj不确定。我的帖子现在已被接受,因此它将始终显示在第一位。您可以将鼠标悬停在“2小时前”上查看时间戳-看起来您比我快了10秒:)
Regex oRegex = new Regex(@"test[a-zA-Z]");