Каковы некоторые из наиболее полезных регулярных выражений для программистов?
Я новичок в регулярных выражениях и только начал изучать некоторые. Мне было интересно, какие из наиболее часто используемых регулярных выражений программисты. Положите это по-другому, я хотел бы знать, какие регулярные выражения наиболее полезны? Как они могут помочь мне в моих ежедневных задачах? Я бы предпочел знать регулярные выражения, полезные для ежедневного программирования, а иногда не использовал регулярные выражения, такие как сопоставление адресов электронной почты.
Кто-нибудь? Благодарю.
Изменить. Большинство ответов включают регулярные выражения для соответствия адресам электронной почты, 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 файла, обычно лучше использовать библиотеку, специально разработанную для синтаксического анализа этого контента, чем пытаться самостоятельно написать что-либо.