регулярное выражение для поиска всех адресов ячеек в строке - PullRequest
4 голосов
/ 31 марта 2010

У меня есть строка, которая может содержать адрес ячейки, который выглядит следующим образом:
A1, B34, Z728 - только заглавные буквы и
AA3, ABA92, ZABC83 - перед целым числом может быть несколько букв.
Типичная исходная строка выглядит так:
= 3 + 7 * A1-B3 * AB28
Мне нужно получить коллекцию всех ячеек в строке: A1, B3, AB28
Я попытался использовать метод Regex.Matches со следующим регулярным выражением: @ "[A..Z] +? [1..9] +?", Но он не работает. Кто-нибудь может мне помочь написать регулярное выражение?

1 Ответ

5 голосов
/ 31 марта 2010

В вашем регулярном выражении есть три ошибки:

  • Диапазоны классов символов указываются -, а не ...
  • Адреса ячеек могут содержать цифру 0, но не первую цифру.
  • Жадный по умолчанию - это то, что вы хотите. Ваше ленивое совпадение потеряет цифры с конца.

Попробуйте это:

"[A-Z]+[1-9][0-9]*"

Пример:

    string input = "3+7*A1-B3*AB28";
    foreach (Match match in Regex.Matches(input, "[A-Z]+[1-9][0-9]*"))
        Console.WriteLine(match.Value);

Выход:

A1
B3
AB28
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...