Почему "[" соответствует [a-zA-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);
}

Выход:

панцирь

тестовое задание[

testB

Вопрос: почему test[ в выходной? Класс символов [a-zA-Z] должен соответствовать только буквенным символам от a до z и от A до Z.

3 ответа

Решение

У вас есть опечатка в вашем регулярном выражении. [a-zA-z] должно быть [a-zA-Z],

Характер [ находится между A а также z персонажи.

Так как [ попадает в диапазон ASCII A-zтак что меняй A-z присутствует внутри класса char A-Z

Regex oRegex = new Regex(@"test[a-zA-Z]");

Z - опечатка в вашем случае. Измените это [a-zA-Z]

Regex oRegex = new Regex(@"test[a-zA-Z]");
Другие вопросы по тегам