Regex для 1 или 2 цифр, необязательный не буквенно-цифровой, 2 известных альфа - PullRequest
35 голосов
/ 01 марта 2011

Я ударился головой о стену, пытаясь сделать то, что должно быть простым регулярным выражением - мне нужно сопоставить, например, 12po, где часть 12 может состоять из одной или двух цифр, затем необязательный буквенно-цифровой, например :.-,_ и т. д., затем строка po.

Возможное использование будет в C#, но я бы хотел, чтобы оно также работало в обычном grep в командной строке. У меня нет доступа к C#, что не помогает.

Ответы [ 3 ]

54 голосов
/ 01 марта 2011
^[0-9]{1,2}[:.,-]?po$

Добавьте любые другие допустимые не алфавитно-цифровые символы в средние скобки, чтобы их можно было также проанализировать.

22 голосов
/ 01 марта 2011
^\d{1,2}[\W_]?po$

\d определяет число, а {1,2} означает 1 или два выражения перед, \W определяет несловесный символ.

4 голосов
/ 01 марта 2011
^[0-9][0-9]?[^A-Za-z0-9]?po$

Вы можете проверить это здесь: http://www.regextester.com/

Чтобы использовать это в C #,

Regex r = new Regex(@"^[0-9][0-9]?[^A-Za-z0-9]?po$");
if (r.Match(someText).Success) {
   //Do Something
}

Помните, @ - это полезный символ, который означает, что синтаксический анализатор воспринимает строку буквально (например, вам не нужно писать \\ для одной обратной косой черты)

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