Строка RegEx для трех букв и двух чисел с пробелами до и после - PullRequest
5 голосов
/ 21 августа 2010

Два быстрых вопроса:

  1. Какая будет строка RegEx для трех букв и двух чисел с пробелом до и после них (то есть «LET 12»)?
  2. Не знаете ли вы хороших ресурсов / инструментов RegEx?

Ответы [ 6 ]

9 голосов
/ 21 августа 2010

Для хорошего ресурса попробуйте этот сайт и программу RegexBuddy . Вы даже можете сами найти ответ на свой вопрос с помощью этих сайтов.

Для начала вам нужно что-то вроде этого:

/^[a-zA-Z]{3}\s+[0-9]{2}$/

Но точные детали зависят от ваших требований. Вероятно, будет лучше, если вы научитесь самостоятельно использовать регулярные выражения, а затем будете писать регулярные выражения вместо того, чтобы просто копировать ответы здесь. Мелкие детали имеют большое значение. Примеры:

  • Что такое "буква"? Просто А-Я или тоже иностранные буквы? Как насчет строчных букв?
  • Что такое «число»? Просто 0-9 или тоже иностранные цифры? Только целые числа? Только положительные целые числа? Могут ли быть ведущие нули?
  • Должен ли быть один пробел между буквами и цифрами? Или любое количество пробелов? Даже нет?
  • Хотите найти эту строку в более крупном тексте? Или точно соответствует линии?
  • и т.д ..

Ответы на эти вопросы изменят регулярное выражение. В конечном счете, вам будет гораздо легче научиться создавать регулярные выражения, чем полностью указывать свои требования и ждать, пока другие люди ответят.

Я забыл упомянуть, что до и после будет пробел. Как мне это включить?

Опять вам нужно рассмотреть вопросы:

  • Вы имеете в виду только один пробел или любое количество пробелов? Возможно, не всегда пробел, но только иногда?
  • Вы имеете в виду буквально пробел или какие-либо пробельные символы?

Мое предположение:

/^\s+[a-zA-Z]{3}\s+[0-9]{2}\s+$/
2 голосов
/ 21 августа 2010

/[a-z]{3} [0-9]{2}/i будет совпадать с 3 буквами, за которыми следует символ пробела, а затем 2 цифры. [a-z] - это класс символов , содержащий буквы от a до z, а {3} означает, что вы хотите ровно 3 члена этого класса. Пробел соответствует буквальному пробелу (альтернативно, вы можете использовать \s, который является «сокращенным» классом символов, который соответствует любому пробелу). i в конце - это модификатор шаблона , указывающий, что ваш шаблон не учитывает регистр.

Если вы хотите, чтобы вся строка была только такой, вам нужно привязать ее с помощью ^ и $:

/^[a-z]{3} [0-9]{2}$/i

Ресурсы регулярных выражений:

  • http://www.regular -expressions.info - отличный учебник с большим количеством информации
  • http://rexv.org/ - онлайн-тестер регулярных выражений, поддерживающий различные механизмы.
1 голос
/ 21 августа 2010

^([A-Za-z]{3}) ([0-9]{2})$ предполагается, что между буквами / цифрами один пробел, как в вашем примере. Это будет захватывать буквы и цифры отдельно.

Я использую http://gskinner.com/RegExr/ - это позволяет вам построить регулярное выражение и проверить его с помощью собственного текста.

0 голосов
/ 04 июля 2011

попробуйте эту регулярную экспрессию

[^"\r\n]{3,}
0 голосов
/ 21 августа 2010

Как вы, вероятно, можете судить по широкому кругу ответов, RegEx - это сложный предмет с широким разнообразием мнений и предпочтений, и зачастую это несколько способов выполнения действий.Вот мое предпочтительное решение.

^[a-zA-Z]{3}\s*\d{2}$

Я использовал [a-zA-Z] вместо \w, потому что \w иногда включает в себя подчеркивание.

\s* позволяет использовать ноль или более пробелов.

Я стараюсь использовать классы символов везде, где это возможно, поэтому я выбрал \d.

0 голосов
/ 21 августа 2010

\w{3}\s{1}\d{2} И мне нравится этот сайт.

РЕДАКТИРОВАТЬ: [a-zA-Z]{3}\s{1}\d{2} - \w также поддерживает числовые символы.

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