Thread not greedy enough?
(6 answers)
Opened by linuxCowboy at 2021-07-01 17:37
Perl soll nichts ausgeben? Dann lass den Schalter -p weg! Fertig.
Ansonsten ist die Regex-Engine hier durchaus gierig wie ein Banker. Man muss nur verstehen wie sie arbeitet. Denn sie ist zu mehr in der Lage als ein generischer Banker.Sie kann auch einen oder mehr Schritt zurücktreten und versucht es dann solange mit weniger gierigen Varianten, bis es eine Version findet die ein Ergebnis liefern kann. In diesem Fall eben solange, bis das b keine Rolle mehr spielt. Das hast Du ihm aber vorgegeben, indem Du den Quantifier * verwendet hast. Dann ist der Regex nicht der Anforderung entsprechend. Suchst Du vielleicht den Quantifier + anstatt * ? Vielleicht kannst Du das Pattern verankern? Code: (dl
)
1 $ echo abc | perl -pe 's/(?<!a)(b)+c/x$1c/' Zum Verständnis von Regulären Ausdrücken sei das Buch "Regular Expressions" von Jeffrey Friedl empfohlen; siehe http://regex.info/book.html Last edited: 2021-07-01 20:37:57 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |