Нужно регулярное выражение, чтобы соответствовать три строки символов - PullRequest
1 голос
/ 03 октября 2008

Я обычно держусь подальше от regular expressions, потому что редко нахожу для них применение. Но в этом случае я не думаю, что у меня есть выбор.

Мне нужно регулярное выражение для следующей ситуации. Я буду смотреть на три строки символов. Это будет совпадение, если первый символ 1-9 or the letters o,n,d (lower or upper) И второй символ 1,2 or 3, а третий символ 0-9.

Кто-нибудь может мне помочь?

Ответы [ 6 ]

9 голосов
/ 03 октября 2008

Небольшое отклонение от нескольких других ответов. Ограничьте ввод точно совпадающим текстом.


^[1-9ondOND][123][0-9]$
5 голосов
/ 03 октября 2008
[1-9ondOND][123][0-9]

Я пропустил ^ и $ (начало и конец строковых маркеров), потому что вы сказали, что у вас будут трехсимвольные строки, но нет ничего плохого в том, чтобы включать их, и они могут улучшить скорость, а не то, что на таком коротком входе будет большое дело.

Конечно, это предполагает, что вы работаете на языке и локали, где прописные буквы, эквивалентные o, n и d, равны O, N и D. Если нет, вам нужно будет сказать своему интерпретатору регулярных выражений игнорировать регистр. Механизм зависит от языка / структуры.

Для python вы бы использовали что-то вроде:

re.match('[1-9ond][123][0-9]', inputstring, re.IGNORECASE)

re.match вызывает совпадение в начале строки, поэтому вам не понадобится ^ в любом случае.

2 голосов
/ 03 октября 2008
2 голосов
/ 03 октября 2008

Perl / ^ [1-9ondOND] [1-3] [0-9] $ /

^ = в начале строки, $ = конец строки

0 голосов
/ 29 октября 2014

Очень поздний ответ, но надеюсь, что это поможет

([1-9]|(?i)(o|n|d))[123][\d]

http://regex101.com/r/vE2jT1/1

0 голосов
/ 03 октября 2008

В системе на основе PREG (большинство из них в наши дни):

^(?:[1-9]|[ond])[1-3][0-9]$

В некоторых системах требуются маркеры начала / конца (PHP, Perl, но не .NET, например), если у вас, в конечном итоге это будет выглядеть примерно так:

/^(?:[1-9]|[ond])[1-3][0-9]$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...