Gibt es eine Möglichkeit, Regex zum Neuformatieren einer Zeichenfolge zu verwenden?
Ich habe so eine Saite AEY4293
und ich möchte einen Strich zwischen Buchstaben und Zahlen hinzufügen AEY-4293
.
Ich habe versucht etwas zu finden s/pattern/replacement/
aber ich konnte es nicht finden.
Ich kann die Blöcke mit auswählen /(w+)(d+)/
wenn ich also ein muster geben könnte, um den text wie neu zu formatieren 1-2
es wäre toll.
Vielen Dank!
Antworten:
2 für die Antwort № 1irb(main):001:0> "AEY4293".sub(/(D+)(d+)/, "1-2")
=> "AEY-4293"
2 für die Antwort № 2
"AEY4293".sub(/(?<=w)(?=d)/, "-")
Du kannst es auch tun
"AEY4293".sub(/(?=d)/, "-")
was in der Nähe von MU liegt, ist zu kurz.
1 für die Antwort № 3
Regex wäre:
/([A-Z]+)(d+)/
Ersatzmuster wäre:
1-2
Es gibt ein Problem mit dem Ausdruck /(w+)(d+)/
, weil w
passt sowohl Alpha als auch Zahlen. Also mit Eingabe AEY4293
, w+
Wird zusammenpassen AEY429
und d+
wird nachlaufen 3
.
1 für die Antwort № 4
Wenn das nicht-numerische Präfix immer aus drei Zeichen besteht, können Sie dies auch ohne regulären Ausdruck tun:
s = "AEY4293"
s[3,0] = "-"
# s is now "AEY-4293"
Wenn Sie mehr Flexibilität bei der Präfixgröße wünschen, können Sie dies verwenden index
kombiniert mit dem oben genannten:
s[s.index(/d/), 0] = "-"
Ich mag die Notation für die Klammerzuweisung, da sie gut zu Ihrer Absicht passt.
0 für die Antwort № 5
Da ist ein str.sub(pattern, replacement)
Methode dafür. Ersatz ist ein Stich mit 1
und so weiter referenzen.