Я хочу совместить группу много раз.Последовательность совпадений много раз
import re
re.findall(r'\\x\w{2}',"echo -e '\\x6b\\x61\\x6d\\x69' random \\x6b\\x61")
>> ['\\x6b', '\\x61', '\\x6d', '\\x69', '\\x6b', '\\x61']
, который дает мне ожидаемый результат массива. Однако
re.findall(r'(\\x\w{2})+',"echo -e '\\x6b\\x61\\x6d\\x69' random \\x6b\\x61")
>> ['\\x69', '\\x61']
т. Е. Последнее совпадение каждого набора шестнадцатеричных чисел. Я предположил, что наличие +
будет соответствовать группе по крайней мере один раз, но это явно не так. Я надеялся, что это дало бы мне ['\\x6b\\x61\\x6d\\x69','\\x6b\\x61']
.
Что я здесь сделал неправильно?
Исправьте меня, если я ошибаюсь. Это целая группа не захватывает, так ли это, что она фокусируется на внешнем paranthesis в качестве группы захвата? –
Группа без захвата предназначена для того, чтобы '+' применялся ко всему шаблону вместо символа непосредственно перед ним. И так как вы просто хотите захватить внешний шаблон, вам нужно сделать внутреннюю группу * non-capture *. – Psidom