Какой вкус регулярного выражения grep?
Я предполагаю, что это не Perl Compatible Regular Expression, поскольку существует особый тип grep
, который специально является PCRE. Что grep
наиболее похожее на?
Есть ли какие-либо особые особенности из grep
, о которых мне нужно знать? (Я привык к Perl и функциям preg
в PHP)
Ответы
Ответ 1
Поведение по умолчанию GNU grep
- использовать слегка ароматный вариант на основных регулярных выражениях POSIX, с подобным образом измененным видом Расширенные регулярные выражения POSIX для egrep
(обычно aka grep -E
). POSIX ERE - это то, что использует PHP ereg()
.
GNU grep
также утверждает, что поддерживает grep -P
для PCRE, кстати. Поэтому не требуется особого типа grep
.
Ответ 2
Вы можете сравнить различные варианты здесь.
Ответ 3
Здесь хорошая запись здесь. Чтобы процитировать страницу, "grep должен использовать BRE, за исключением того, что grep -E использует ERE. (GNU grep подходит для некоторых расширений, в которых POSIX оставляет поведение неуказанным).
Другими словами, это долгая история.;)
Ответ 4
Страницы grep man делают довольно тщательную работу по объяснению аромата регулярного выражения, доступного в grep. man grep
очень полезен.
Ответ 5
Grep - это реализация регулярных выражений POSIX. Существует два типа регулярных выражений posix - основные регулярные выражения и расширенные регулярные выражения. В grep обычно вы используете параметр -E, чтобы разрешить расширенные регулярные выражения.
Ответ 6
В PHP нет регулярной функции grep. Если вы ссылаетесь на семейство функций PHP ereg, то это регулярные выражения POSIX. Если вы имеете в виду утилиту командной строки Linux grep
, то это регулярные выражения POSIX. Он поддерживает как основные, так и расширенные регулярные выражения POSIX.