Frage Wie man einen Unterschied zwischen der Verwendung von '*', '+' und '?' in Grep? [Duplikat]


Diese Frage hat hier bereits eine Antwort:

ich verstehe das

'*' : The preceding item will be matched zero or more times.
'?' : The preceding item is optional and will be matched, at most, once.
'+' : The preceding item will be matched one or more items

Kann mir jemand ein Beispiel geben, wann es einen Unterschied bei Grep geben würde? Ich habe egrep benutzt, aber ich habe versucht zu prüfen, ob ich für diese Operatoren verschiedene Ausgaben generieren kann.


4
2017-09-09 08:34


Ursprung


?  und + sind Teil der erweiterten Regex, also brauchen Sie egrep, damit das funktioniert - Sergiy Kolodyazhnyy
oder grep -E in GNU Grep :) - Zanna
Mit GNU Grep, das gleiche Funktionalität ist sowohl in regulären (BRE) als auch in erweiterten (ERE) regulären Ausdrücken verfügbar - es ist nur eine Frage der Flucht. Also zum Beispiel in BRE, ? entspricht einem Literal ? während \? ist der {0,1} Quantor; während in ERE ist es umgekehrt, d.h. ? ist der Quantifizierer während \? entspricht einem Literal ? - steeldriver


Antworten:


ein Beispiel geben? Versuch es?

$ cat greppy
grp
grep
greep

null oder mehr e hier

$ egrep 'gre*p' greppy
grp
grep
greep

null oder eins hier

$ egrep 'gre?p' greppy
grp
grep

ein oder mehrere e hier

$ egrep 'gre+p' greppy
grep
greep

12
2017-09-09 08:41



Es ist mir ein Vergnügen, genießen Sie egrep ^ _ ^ @lufork - Zanna
zero or one e here oder optional e here - Avinash Raj
Diese Art, es zu sagen, kann für manche Leute klarer sein @AvinashRaj :) - Zanna