我刚刚发现了模块sre_parse
。
以下代码是否正常处理可用于在匹配中替换的组\g<TEST>
是否正常?
import sre_parse
pattern = r"(?P<TEST>test)\s+\w*\g<TEST>"
parsedpattern = sre_parse.parse(pattern)
parsedpattern.dump()
这给出了以下输出,其中所有最后的文字应该是,从我的谦虚的角度来看,确实有一些信息可以提供关于替换的信息。
subpattern 1
literal 116
literal 101
literal 115
literal 116
max_repeat 1 2147483647
in
category category_space
max_repeat 0 2147483647
in
category category_word
literal 103
literal 60
literal 84
literal 69
literal 83
literal 84
literal 62
答案 0 :(得分:0)
我在文档中仔细看一下。这是另一个代码。
import sre_parse
pattern = r"(?P<TEST>test)\s+\w*\g<TEST>"
parsedpattern = sre_parse.parse(pattern)
parsedpattern.dump()
print('---')
pattern = r"(?P<TEST>test)\s+\w*(?P=TEST)"
parsedpattern = sre_parse.parse(pattern)
parsedpattern.dump()
这将打印以下输出,我们可以看到该组在第二个模式中看到,但在第一个模式中看不到。
subpattern 1
literal 116
literal 101
literal 115
literal 116
max_repeat 1 2147483647
in
category category_space
max_repeat 0 2147483647
in
category category_word
literal 103
literal 60
literal 84
literal 69
literal 83
literal 84
literal 62
---
subpattern 1
literal 116
literal 101
literal 115
literal 116
max_repeat 1 2147483647
in
category category_space
max_repeat 0 2147483647
in
category category_word
groupref 1
文档说\g<...>
可以在传递给repl
re.sub()
参数的字符串中使用。这肯定是这个替换的功能。
所以我将不得不寻找另一种方式来搜索模式中的\g<...>
...