Каковы некоторые из наиболее полезных регулярных выражений для программистов?

Я новичок в регулярных выражениях и только начал изучать некоторые. Мне было интересно, какие из наиболее часто используемых регулярных выражений программисты. Положите это по-другому, я хотел бы знать, какие регулярные выражения наиболее полезны? Как они могут помочь мне в моих ежедневных задачах? Я бы предпочел знать регулярные выражения, полезные для ежедневного программирования, а иногда не использовал регулярные выражения, такие как сопоставление адресов электронной почты.

Кто-нибудь? Благодарю.

Изменить. Большинство ответов включают регулярные выражения для соответствия адресам электронной почты, URL-адресам, датам, номерам телефонов и т.д. Обратите внимание, что не всем программистам приходится беспокоиться об этом в своих повседневных задачах. Я хотел бы знать несколько более общих применений регулярных выражений, если они есть, какие программисты вообще (могут) использовать независимо от того, на каком языке они работают.

Ответы

Ответ 1

Примеры регулярных выражений для

Десятичный ввод

  • Положительные целые числа ^\d+$

  • Отрицательные целые числа ^-\d+$

  • Целое число ^-?\d+$

  • Положительное число ^\d*\.?\d+$

  • Отрицательное число ^-\d*\.?\d+$

  • Положительное число или отрицательное число ^-?\d*\.?\d+$

  • Номер телефона ^\+?[\d\s]{3,}$

  • Телефон с кодом ^\+?[\d\s]+\(?[\d\s]{10,}$

  • Год 1900-2099 ^(19|20)\d{2}$

  • Дата (dd mm yyyy, d/m/yyyy и т.д.)

    ^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
    

IP v4:

    ^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$

Алфавитный ввод

  • Личное имя ^[\w.']{2,}(\s[\w.']{2,})+$
  • Имя пользователя ^[\w\d_.]{4,}$
  • Пароль не менее 6 символов ^.{6,}$
  • Пароль или пустой ввод ^.{6,}$|^$
  • email ^[_]*([a-z0-9]+(\.|_*)?)[email protected]([a-z][a-z0-9-]+(\.|-*\.))+[a-z]{2,6}$
  • домен ^([a-z][a-z0-9-]+(\.|-*\.))+[a-z]{2,6}$

Другие регулярные выражения  - Совпадение без ввода ^$  - Совместить пустой ввод ^\s\t*$  - Соответствует новой строке [\r\n]|$  - Матч белого пробела ^\s+$  - Match Url = ^http\:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$

Ответ 2

Я бы подходил к этому под другим углом и сказал, что наиболее полезно знать, когда использовать регулярные выражения и когда НЕ использовать их.

Например, представьте эту проблему: "Выясните, заканчивается ли строка символом пробела". Здесь можно использовать регулярное выражение, но если вы используете С#, этот код выполняется намного быстрее:

bool EndsWithWhitespace(string s)
{
    return !string.IsNullOrEmpty(s) && char.IsWhiteSpace(s[s.Length - 1]);
}

Регулярные выражения являются мощными, и важно знать, когда они слишком для проблемы, которую вы пытаетесь решить.

Ответ 3

Подумайте о полях ввода, которые требуют проверки, таких как почтовые индексы, номера телефонов и т.д. Регулярные выражения очень полезны для их проверки. Кроме того, ознакомьтесь с этим сайтом, который содержит много руководств и множество других примеров, некоторые из которых я представляю следующим образом:

Числовые диапазоны.. Поскольку регулярные выражения работают с текстом, а не числа, соответствующие определенным числовым диапазон требует немного дополнительной осторожности.

Соответствие плавающей точке.. иллюстрирует распространенную ошибку делая все в регулярном выражение необязательно.

Соответствие адреса электронной почты.. много споров о том, что такое правильное регулярное выражение для соответствия адресам электронной почты. Это прекрасный пример, показывающий, что вам нужно точно знать, что вы пытаясь сопоставить (а что нет), и что всегда есть компромисс между сложностью и точностью регулярного выражения.

Соответствие действительным датам.выражение, которое соответствует 31-12-1999, но не 31-13-1999.

Поиск или проверка кредитной карты Номера. Подтвердите номера кредитных карт. введенные в форму заказа. найти номера кредитных карт в документах для аудита безопасности.

И многие, многие, многие другие возможные приложения.

Ответ 4

  • Адрес электронной почты
  • Сайт
  • Файл-Дорожка
  • Телефонные номера/Факс/ZIP и другие номера, используемые в бизнесе (номера химии и т.д.).
  • содержимое файла (проверьте, может ли файл быть допустимым XML файлом,...)
  • изменение и форматирование кода (с заменой)
  • типы данных (GUID, синтаксический анализ целых чисел,...)
  • ...

Ответ 5

Закрывающий тег

([^<]*)

Серьезно. Я слишком часто использую комбинации этого способа для удобства... Мы все должны использовать regex: en для peg-parsers, тем более, что для них есть хороший стиль, похожий на регулярные выражения.

Ответ 6

Это немного похоже на вопрос: "Каковы наиболее полезные слова для программистов?"

Это зависит от того, для чего вы собираетесь использовать их, и зависит от того, на каком языке. И ты не сказал.

Некоторым программистам не нужно беспокоиться о соответствии адресов электронной почты, номеров телефонов, почтовых индексов и IP-адресов.

Моя копия

Освоение регулярных выражений, O'Reilly, 3rd Edition, 2006

выделяет много места для ароматов регулярных выражений, используемых разными языками.

Это отличная ссылка, но я нашел второе издание более удобочитаемым.

Ответ 7

Как они могут помочь мне в моих ежедневных задачах?

Ежедневное использование для программистов может включать

  • поиск/замена выборочных данных для целей тестирования
  • поиск в файлах журнала для шаблонов String (например, исключения)
  • поиск структуры каталогов для файлов определенного типа (так же просто, как dir *.txt делает это)

чтобы назвать только несколько

Ответ 8

Ну... Я как бы думаю, что ваш вопрос неправильный. Похоже, вы спрашиваете о регулярных выражениях, которые могут/должны быть частью одной кодировки или почти так же, как и математические операторы. Действительно, если ваш код зависит от распространенных регулярных выражений, вы, вероятно, делаете что-то очень не так. Для повселокального использования всего кода вы хотите использовать структуры данных, которые лучше определены и более эффективны для работы, чем строки, управляемые регулярным выражением.

Ближайшая вещь к тому, что вы просите об этом, будет иметь для меня большой смысл, будет чем-то вроде /\s+/, используемого для разделения строк на произвольные количества пробелов.

Ответ 9

  • Электронная почта
  • URL веб-сайта
  • Телефонные номера
  • Почтовый индекс
  • Alpha Numeric, (имя пользователя состоит из альфа-номера и только начинается с альфа-символа
  • IP-адрес

Ответ 10

Это будет полностью зависеть от того, в каком домене вы работаете. Для некоторых это будут номера телефонов и SSN, а другие будут адресами электронной почты, IP-адресами, URL-адресами. Самое главное - знать, когда вам нужно регулярное выражение, а когда нет. Например, если вы пытаетесь проанализировать данные из XML или HTML файла, обычно лучше использовать библиотеку, специально разработанную для синтаксического анализа этого контента, чем пытаться самостоятельно написать что-либо.