Для чего Вы использовали Регулярные выражения?

Вы можете попробовать Perl

$ echo "a1 b2 c3 )@in#( d4 e5 f6 )@out#( g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) '
a1 b2 c3
d4 e5 f6
g7 h8 i9

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) '
a1 b2 c3
d4 e5 f6 g7 h8 i9

$

Вы можете прочитать вывод, пройдя через цикл while

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print join("\n",@a) ' | while read x;do; echo "val=$x"; done
val=a1 b2 c3
val=d4 e5 f6 g7 h8 i9
$

или распечатать каждое значение arr в perl и прочитать их по одному один

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print $a[0] ' | read x1
$ echo $x1
a1 b2 c3
$

$ echo "a1 b2 c3 )@in#( d4 e5 f6 g7 h8 i9" | perl -lne ' @a=split(/\s*\)\@in#\(\s*|\s*\)\@out#\(\s*/); print $a[1] ' | read x2
$ echo $x2
d4 e5 f6 g7 h8 i9
$
9
задан 3 revs, 2 users 57% 1 January 2009 в 10:59
поделиться

21 ответ

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

0
ответ дан 4 December 2019 в 06:01
поделиться

Проверка адреса электронной почты является чем-то, для чего я всегда использую regex.

Я даже не хочу думать о попытке сделать что-то как этот иначе.

0
ответ дан 4 December 2019 в 06:01
поделиться

Много вещей. Включая:

  • Исследование командных строк
  • Парсинг ввода данных пользователем
  • Парсинг различных текстовых файлов
  • Исследование журналов веб-сервера
  • Исследование результатов испытаний
  • Нахождение текста в электронных письмах
  • Чтение конфигурационных файлов

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

13
ответ дан 4 December 2019 в 06:01
поделиться
I've regularly used it to take text output from some programs which have a lot of information and abstract some of that information to be saved in databases, spreadsheets or even as a new text file.
Also, I've used it in a program to read text files that initialize the program's variables.
0
ответ дан 4 December 2019 в 06:01
поделиться

Регулярные выражения являются большими для мелкого текста searchs, сопоставление с образцом и substitions в small&medium измерили тексты. Например, одно из места, что я использовал Ре, является полевыми проверками формы.

Если Вы не возражаете о performence, Вы можете действительно быстрые и грязные сценарии для того, чтобы сделать что-либо с текстами.

0
ответ дан 4 December 2019 в 06:01
поделиться

Парсинг нотации игры в кости ("2d6", "3d4+10", и т.д.) для создания Игры в кости возражает в рубине. (Не уверенный, если этот код является "идеальным" способом сделать это, поскольку я все еще изучаю Ruby).

def Dice
    def self.parse(str)
        match = /^(\d+)d(\d+)([\+|\-]\d+)?$/.match(str)
        amt, sides, mod = match.captures.map {|c| c.to_i }
        Dice.new(amt, sides, mod)
    end
end

Очень хороший и легкий.

0
ответ дан 4 December 2019 в 06:01
поделиться

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

0
ответ дан 4 December 2019 в 06:01
поделиться

В ASP.NET, если Вы используете пользовательские элементы управления или основные страницы, даже если Вы называете свои средства управления исключительно, они искажаются платформой. Я записал немного обертки вокруг опытной функции $, чтобы позволить мне получать искаженные средства управления в JavaScript несмотря на искажение имени. Это использует регулярное выражение для поиска DOM средства управления, которые заканчиваются соответствующим именем.

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

0
ответ дан 4 December 2019 в 06:01
поделиться

Вытаскивание частей строки вводится. Например,

  • Веб-страницы "Анализа экранных данных" или путем соответствия непосредственно на HTML или (более полезном) выводе ASCII от инструмента как w3m, например, для обнаружения, когда футбольный матч по так моему компьютеру, могут прекратить записывать его

  • Разделение почтового заголовка в тег и значение, например, чтобы помочь определить спам

  • Вытягивая имя, фамилию и адрес электронной почты из студенческих записей так, чтобы в журналах оценок я мог идентифицировать студента фамилией, если это уникальный и "последним, сначала", если разрешение неоднозначности требуется

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

1
ответ дан 4 December 2019 в 06:01
поделиться

В моих веб-формах я часто использую regex для проверки то, что пользователь ввел в текстовое поле или подобный. Адрес электронной почты должен быть некоторыми непробельными символами, сопровождаемыми символ, сопровождаемый еще некоторыми непробельными символами, сопровождаемыми символом точки, и т.д. Даты должны встретить один из нескольких допустимых форматов (23.01.2008, 23.01.08) для моего кода для выяснения точно, какая дата вводилась. И т.д.

1
ответ дан 4 December 2019 в 06:01
поделиться

Переполнение стека является на самом деле хорошим местом для нахождения вариантов использования:

https://stackoverflow.com/questions/tagged/regex

Думайте о regex как о шарике (Вы знаете, *? {a, b, c} [abc]) на стероидах.

1
ответ дан 4 December 2019 в 06:01
поделиться

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

  • Поиск вещей в редакторе, особенно когда я знаю две части на строке, но не, что является промежуточным (извините посторонний пробел),
    • Где конкурирующая функция, которая берет виджет?"reval.*\<widget\<"
    • Где my_obj присвоен?"\<my_obj\>.*="
  • Чтобы искать и заменить для создания модификации файла данных: т.е. регулируемый вся громкость доставки к один"#<volume>[-0-9.]+</volume>#<volume>1.0</volume>#g"
  • К выводу munge для установки на экране (удаляющий пробел или неинтересные поля).
  • К munge файлам данных в другой формат, таким как взятие файлов журнала и создание файла для gnuplot, который данные о производительности графиков.
  • Для программного использования, такого как сопоставление с образцом имя значения данных для обработки его по-другому, если оно соответствует определенным критериям, наиболее легко выраженным регулярным выражением.

После использования regexes я ненавижу поле окон "Find", потому что оно так ограничено.

Как другой пользователь ответил, регулярные выражения являются значительно более мощным globbing, но они идут путем кроме того. Вы не должны читать "Основные Регулярные выражения" для использования их, но я действительно рекомендую книгу. Я уверен, что существует много ресурсов в Интернете, такой как здесь, хотя я не могу ручаться ни за одного из них.

Другое преимущество для использования регулярных выражений (ли в коде или на командной строке) состоит в том, что они были в большой степени оптимизированы. Grep и синтаксические анализаторы DFA в особенности почти наверняка быстрее, чем, что Вы записали бы самостоятельно... и более вероятно быть корректными в первый раз. Не изобретайте велосипед, когда у Вас будет такой хороший удобный.

2
ответ дан 4 December 2019 в 06:01
поделиться

Несколько лет назад перед iPhone, веб-браузеры на Windows Mobile и Palm PDA были действительно очень ограничены. Даже CSS был от пределов, если у Вас не было очень последней версии Windows Mobile. Поскольку у меня был гиковский КПК с необычной беспроводной расширительной платой, я хотел бродить по сети от него вместо того, чтобы покупать ноутбук, и таким образом, я сделал портала веб-сайт. Одной из вещей, которые я сделал, была страница, которая могла сделать преобразования, удаления и замены на определенных частях HTML, или универсальные операции как удаление всех изображений или сайт определенный материал. Это было в значительной степени все сделано с regex.

2
ответ дан 4 December 2019 в 06:01
поделиться

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

Традиционный пример мог бы быть, когда Вы хотите найти все случаи, скажем, номеров телефона в файле. Поиск отдельных чисел, очевидно, не собирается работать и просто ищет тире, собирается, вероятно, быть неоднозначным. Намного лучше для высказывания "находят все случаи 3 цифр сопровождаемыми тире сопровождаемый 4 цифрами" (сохранил основным, например, цели; в действительности можно хотеть соответствовать коду области, различным разделителям, и т.д.),

Другая аккуратная вещь о regexps, они позволяют Вам использовать часть/всю того, что Вы искали в своей замене. Таким образом, если Вы хотели заменить весь код области 555 с чем-то еще, Вы можете при поддержании остальной части неповрежденного номера телефона.

2
ответ дан 4 December 2019 в 06:01
поделиться

Для самоучеников все Вы могли хотеть знать о Регулярных выражениях и больше: http://www.regular-expressions.info/

Это могло бы помочь понять, почему их называют "Регулярными выражениями". 'Регулярная' часть его означает, что существует некоторое ожидание шаблона. Часть 'выражений' его подразумевает, что они - в некотором смысле, математическое представление текста, и это в свою очередь позволяет Вам извлекать информацию из текста.

Например, я записал модуль, который использовал регулярные выражения для разделения номеров телефона на их составляющие части - например, страна, код области, обмен и станция. Это звучит легким для человека, но для компьютера не столь легко, если Вы полагаете, что существует столько способов записать номера телефона. Можно сделать +1 (407) 555-1234 или 407-555-1234 или 555-1234 (7-разрядный набор номера) или 1.407.555.1234 или 4075551234. Используя регулярные выражения помогает абстрагировать обработку текста, когда существуют определенные вещи, которые Вы пытаетесь извлечь из текста.

3
ответ дан 4 December 2019 в 06:01
поделиться

Затруднение того, для чего я использовал бы regex:

  1. Проверка входа
  2. Очистка входа
  3. Реструктуризация входа
  4. Поиск подстрок во входе
4
ответ дан 4 December 2019 в 06:01
поделиться

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

Например, следующее выражение будет соответствовать пробелу (просто пробелы и вкладки в данном случае) в начале строки.

^[ \t]+

Это могло бы быть полезно, если бы Вы хотели урезать тот пробел.

6
ответ дан 4 December 2019 в 06:01
поделиться

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

При создании необоснованных предположений о типе, длине, формате или диапазоне входа, приложение вряд ли будет устойчиво. Контроль ввода может стать проблемой безопасности, если взломщик обнаруживает, что Вы сделали необоснованные предположения. Взломщик может затем предоставить тщательно обработанный вход, который ставит под угрозу Ваше приложение путем попытки Внедрения SQL, сценариев перекрестного сайта и других инжекционных нападений. Для предотвращения такой уязвимости необходимо проверить текстовые поля (такие как имена, адреса, идентификационные номера налогоплательщика, и так далее) и использовать регулярные выражения.

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

^ [a-zA-Z' '-'\s] {1,40} $

4
ответ дан 4 December 2019 в 06:01
поделиться

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

Я считал Ваш вопрос и сразу думал об этом.

alt text

Править: Забыл упоминать это комик XKCD. http://xkcd.com/208/

11
ответ дан 4 December 2019 в 06:01
поделиться

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

1
ответ дан 4 December 2019 в 06:01
поделиться
  1. троллинг файлов журнала на предмет исключений или строк проверки (например, «Подсистема A запущена ...») и т. Д.
  2. замена текста (то есть в исходных файлах, чтобы быстро стать операторами Sysout )
  3. , объясняющий коллегам, насколько мощным является регулярное выражение.
0
ответ дан 4 December 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: