Ich möchte eine Gruppe viele Male übereinstimmen.Match-Sequenz viele Male
import re
re.findall(r'\\x\w{2}',"echo -e '\\x6b\\x61\\x6d\\x69' random \\x6b\\x61")
>> ['\\x6b', '\\x61', '\\x6d', '\\x69', '\\x6b', '\\x61']
was mir das erwartete Ergebnis eines Arrays gibt. Jedoch
re.findall(r'(\\x\w{2})+',"echo -e '\\x6b\\x61\\x6d\\x69' random \\x6b\\x61")
>> ['\\x69', '\\x61']
d.h. die letzte Übereinstimmung jedes Satzes von Hexadezimalzahlen. Ich nahm an, dass die +
zumindest einmal der Gruppe entsprechen würde, aber das ist eindeutig nicht der Fall. Ich hatte gehofft, dass dies mir ['\\x6b\\x61\\x6d\\x69','\\x6b\\x61']
gegeben hätte.
Was habe ich hier falsch gemacht?
Korrigieren Sie mich, wenn ich falsch liege. Dieses ganze keine Capture-Gruppen, ist es so, dass es sich auf die äußere Paranthese als einfangende Gruppe konzentriert? –
Die Non-Capture-Gruppe dient dazu, '+' auf das gesamte Muster anstatt auf das Zeichen direkt davor anzuwenden. Und da Sie nur das äußere Muster erfassen möchten, müssen Sie die innere Gruppe * nicht erfassen *. – Psidom