Хороший вопрос.
Многопоточность. Если все типы неизменны тогда, условия состязания не существуют, и Вы в безопасности бросить столько потоков в код, сколько Вы желаете.
, Очевидно, Вы не можете выполнить так много без переменчивости, сохраняют сложные вычисления, таким образом, Вам обычно нужна некоторая переменчивость для создания функционального программного обеспечения для бизнеса. Однако стоит распознать, где неизменность должна лечь, такие как что-либо транзакционное.
Ищут функциональное программирование и понятие чистоты для получения дополнительной информации о философии. Чем больше Вы храните на стеке вызовов (параметрические усилители, Вы являетесь передающими к методам) в противоположность предоставлению доступа к ним через ссылки, такие как наборы или статически доступные объекты, тем более чиста Ваша программа и менее подверженное условиям состязания, которыми Вы будете. С большим количеством мультиядер в эти дни эта тема более важна.
Также неизменность уменьшает сумму возможностей в программе, которая уменьшает потенциальную сложность и потенциал для ошибок.
Примеры регулярных выражений для
Ввод десятичных знаков
Положительные целые числа ^ \ d + $
Отрицательные целые числа ^ - \ d + $
Целое число ^ -? \ d + $
Положительное число ^ \ d * \.? \ d + $
Отрицательное число ^ - \ d * \.? \ d + $
Положительное число или Отрицательный номер ^ -? \ D * \.? \ D + $
Номер телефона ^ \ +? [\ D \ s] {3,} $
Телефон с кодом ^ \ +? [\ d \ s] + \ (? [\ d \ s] {10,} $
Год 1900-2099 ^ (19 | 20) \ d {2} $
Дата (дд мм гггг, д / м / гггг и т. д.)
^ ([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,} $ | ^ $
^ [_] * ([a-z0-9] + (\. | _ *)?) + @ ([Az] [a-z0-9 -] + ( \. | - * \.)) + [az] {2,6} $
^ ([az] [a-z0-9 -] + (\. | - * \.)) + [az] {2,6} $
Другие регулярные выражения
- Не найдено совпадений ^ $
- Соответствует пустому вводу ^ \ s \ t * $
- Соответствует новой строке [\ r \ n] | $
- Соответствует пробелу ^ \ s + $
- Соответствующий URL = ^ http \: \ / \ / [a-zA-Z0-9 .-] + \. [A-zA-Z] {2,3} $
Подумайте о полях ввода, которые требуют проверки, таких как почтовые индексы, номера телефонов, и так далее . Для их проверки очень часто используются регулярные выражения. Также загляните на этот сайт , который содержит множество руководств и множество других примеров, некоторые из которых я представлю далее:
Числовые диапазоны. Поскольку регулярные выражения работают с текстом, а не числа, соответствующие определенному числовому диапазоны требуют дополнительной осторожности.
Сопоставление числа с плавающей запятой. Также иллюстрирует распространенную ошибку сделать все в обычном выражение необязательно.
Соответствие адресу электронной почты. Есть много споров о том, что такое правильное регулярное выражение для соответствия адресам электронной почты. Это прекрасный пример того, что вам нужно точно знать, что вы пытаясь сопоставить (а что нет), и что всегда есть компромисс между сложностью регулярного выражения и точностью.
Соответствие допустимым датам. Обычный выражение, которое соответствует 31-12-1999, но а не 31-13-1999.
Поиск или проверка кредитной карты Номера. Подтвердите номера кредитных карт введен в форму заказа. найти номера кредитных карт в документах для аудит безопасности.
И еще много-много-много других возможных приложений.
Я бы взглянул на это под другим углом и сказал, что очень полезно знать, когда использовать регулярные выражения, а когда НЕ использовать.
Например, представьте себе эту проблему: "Рисунок out, если строка заканчивается пробелом. " Здесь можно было бы использовать регулярное выражение , но если вы используете C #, этот код будет намного быстрее:
bool EndsWithWhitespace(string s)
{
return !string.IsNullOrEmpty(s) && char.IsWhiteSpace(s[s.Length - 1]);
}
Регулярные выражения - мощное средство, и также важно знать, когда они мощный инструмент для решения проблемы, которую вы пытаетесь решить.
До закрывающего тега
([^<]*)
Серьезно. Я слишком часто использую комбинации этого способа для удобства ... Мы все должны отказаться от regex: en для синтаксических анализаторов, тем более что для них есть хороший стиль грамматики, похожий на регулярное выражение.
Что ж ... Мне кажется, ваш вопрос неверен. Похоже, вы спрашиваете о регулярных выражениях, которые могут / должны быть такой же или почти такой же частью кода, как математические операторы. На самом деле, если ваш код повсеместно зависит от регулярных выражений, вы, вероятно, делаете что-то очень неправильно. Для повсеместного использования во всем коде вы хотите использовать структуры данных, которые лучше определены и более эффективны для работы, чем строки, управляемые регулярными выражениями.
Самое близкое к тому, о чем вы просите, было бы много смысла для меня будет что-то вроде / \ s + /
, используемого для разделения строк на произвольное количество пробелов.
Это немного похоже на вопрос ' какие слова наиболее полезны для программистов? »
Это зависит от того, для чего вы собираетесь их использовать, и от того, на каком языке. И вы не сказали .
Некоторым программистам не нужно беспокоиться о сопоставлении адресов электронной почты, номеров телефонов, почтовых индексов и IP-адресов.
Моя копия
Mastering Regular Expressions, O Рейли, 3-е издание, 2006 г.
уделяет много места разновидностям регулярных выражений, используемых в разных языках.
Это отличный справочник, но мне показалось, что второе издание более читабельно.
В моей копии
Mastering Regular Expressions, O'Reilly, 3rd Edition, 2006
много места уделяется разновидностям регулярных выражений, используемых в разных языках.
Это отличный справочник, но мне показалось, что второе издание более читабельно.
В моей копии
Mastering Regular Expressions, O'Reilly, 3rd Edition, 2006
много места уделяется разновидностям регулярных выражений, используемых в разных языках.
Это отличный справочник, но мне показалось, что второе издание более читабельно.
Как они могут помочь мне в повседневных делах?
Ежедневное использование для программистов может включать
dir * .txt
) , чтобы назвать лишь несколько
Это будет полностью зависеть от того, в каком домене вы работаете. Для некоторых это будет телефон номера и SSN и другие, это будут адреса электронной почты, IP-адреса, URL-адреса. Самое важное - знать, когда вам нужно регулярное выражение, а когда нет. Например, если вы пытаетесь проанализировать данные из файла XML или HTML, обычно лучше использовать библиотеку, специально разработанную для анализа этого содержимого, чем пытаться написать что-нибудь самостоятельно.
Самое важное - знать, когда вам нужно регулярное выражение, а когда нет. Например, если вы пытаетесь проанализировать данные из файла XML или HTML, обычно лучше использовать библиотеку, специально разработанную для анализа этого содержимого, чем пытаться написать что-нибудь самостоятельно. Самое важное - знать, когда вам нужно регулярное выражение, а когда нет. Например, если вы пытаетесь проанализировать данные из файла XML или HTML, обычно лучше использовать библиотеку, специально разработанную для анализа этого содержимого, чем пытаться написать что-нибудь самостоятельно.