Wie kann ich passen alles, was nach dem letzten auftreten der einige char in einen regulären perl-Ausdruck?
Beispielsweise, Rückkehr der Teil des Strings, der nach dem letzten x
im axxxghdfx445
(sollte zurück 445
).
InformationsquelleAutor David B | 2010-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus perldoc perlre:
Deshalb
.*x
werden bis zu dem letzten vorkommen desx
..*
.InformationsquelleAutor Eugene Yarmash
Der einfachste Weg wäre, um
/([^x]*)$/
InformationsquelleAutor reko_t
die erste Antwort ist eine gute,
aber wenn wir über "etwas, das nicht enthalten"...
ich mag die Verwendung des regex, "passt" es
sehr nützlich in einigen Fällen
Sie brauchen nicht die führenden". *x " in der regex.
das ist richtig, vielen Dank, aber das war zu verdeutlichen, das "etwas, das doeas nicht x enthalten"
InformationsquelleAutor benzebuth
Noch einen anderen Weg, es zu tun. Es ist nicht so einfach, wie einen einzigen regulären Ausdruck, aber wenn Sie für die Geschwindigkeit zu optimieren, dieser Ansatz wird wahrscheinlich schneller als alles, was mit regex, einschließlich
split
.InformationsquelleAutor FMc
Ich bin überrascht, niemand hat erwähnt die spezielle variable, die das tut, ist
$'
: "$'
" gibt-alles, was nach der übereinstimmenden Zeichenfolge. (perldoc perlre)Jedoch, es ist eine kostengünstige (Hervorhebung von mir):
Aber Wartezeit, dort ist mehr! Sie bekommen zwei Operatoren für den Preis von einem, JETZT handeln!
Ich würde demütig Einreichen, die diese route ist die beste und die meisten straight-forward
Ansatz in den meisten Fällen, da es nicht erforderlich, dass Sie bestimmte Dinge tun
mit Ihrem Muster-Konstruktion, um die postmatch Teil, und es
ist keine Leistungseinbußen.
lol, so zu entgleisen meiner gesamten Arbeit 🙂 in der Tat, in diesem speziellen Fall
/x([^x]*)$/
wäre besser... habe ich auch gefangen in der Beschreibung$'
, die alle anderen bisher übersehen hatte.Wenn du ein '\' vor dem "" - Zeichen können Sie den code vermeiden, der Stil in der Mitte des in Ihrem Angebot.
InformationsquelleAutor Ether
der einfachste Weg ist nicht der reguläre Ausdruck, aber eine einfache split () - und immer das Letzte element.
print (split /x/, $string)[-1];
würde genauso gut funktionieren.Hängt richtig? Was ist, wenn ich die anderen Elemente ?
InformationsquelleAutor ghostdog74
Regulären Ausdruck :
/([^x]+)$/
#assuming x is not last element of the string.
InformationsquelleAutor Nikhil Jain