Nicht gierige Übereinstimmung mit regulären Ausdrücken für Trennzeichen mit mehreren Zeichen in awk
Betrachten Sie die Zeichenfolge"AB 1 BA 2 AB 3 BA"
. Wie kann ich den Inhalt zwischen"AB"
und"BA"
nicht gierig (in awk)?
Ich habe Folgendes versucht:
awk '
BEGIN {
str="AB 1 BA 2 AB 3 BA"
regex="AB([^B][^A]|B[^A]|[^B]A)*BA"
if (match(str,regex))
print substr(str,RSTART,RLENGTH)
}'
ohne Ausgabe. Ich glaube, der Grund für keine Übereinstimmung ist, dass es eine ungerade Anzahl von Zeichen zwischen gibt"AB"
und"BA"
. Wenn ich ersetzestr
mit"AB 11 BA 22 AB 33 BA"
Der Regex scheint zu funktionieren.