我想多次和一组人比赛
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']
我做错什么了
因为
+
不在组中您可以使用常规括号的非捕获版本
您可以用
?:
创建一个\\x\w{2}
的非捕获组,以便用+
重复模式,然后捕获乘以的模式,((?:\\x\w{2})+)
应该捕获一个或多个连续模式作为\\x\w{2}
:相关问题 更多 >
编程相关推荐