Регулярное выражение: что-то из ничего? - PullRequest
0 голосов
/ 30 октября 2010

Так что * само по себе означает повторение предыдущего пункта ноль или более раз. Вывод * - ничто. А как насчет **? Это дает вывод, но как сопоставить ноль или больше раз ничего не дает? Не могли бы вы также объяснить это, пожалуйста? То же самое для ?*: ничто не предшествует ?, так что это не так? Как сопоставить ноль или больше раз ничего не дает?

mugbear:~# grep '*' emptyspace                                                  
mugbear:~# grep '**' emptyspace                                                 
line1
line2

line4
line5

line7
mugbear:~# grep '?' emptyspace
mugbear:~# grep '?*' emptyspace                                         
line1
line2

line4
line5

line7

Ответы [ 3 ]

2 голосов
/ 30 октября 2010

Ведущий *, как правило, не магический из-за контекста

Вы задаете вопросы с ответами, которые не полностью определены и, как таковые, почти наверняка будут зависеть от конкретной реализации RE.

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

Сначала был классический grep / sed / ed / awk. Со временем появился значительно расширенный набор шаблонов, ставший популярным в Perl и других языках.

Некоторые из этих реализаций пытаются заметить, когда персонаж не может быть волшебным из-за его положения.

Таким образом, обычный * может искать фактические * и **, а затем 0 или более * символов. (И каждая строка имеет 0 или более ...)


Примечание. Да, стандарт Posix существует, но он настолько мало влияет, что его можно игнорировать.

1 голос
/ 30 октября 2010

Каждая строка содержит 0 или более повторений любой другой строки.

0 голосов
/ 30 октября 2010

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

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