我在这里遗漏了一些非常基本的东西。
我想匹配所有实例,例如 throw 'some string'
或 throw "error here"
。
p = re.compile(b'throw ["|\'](?P<err>).*["|\']')
这似乎很适合匹配。但是,例如,我想用 throw new Error('some string')
替换 throw 'some string'
。
我的尝试:
p.sub(rb"throw new Error('\g<err>')", b'throw \'foobar\'')
总是导致:
b"throw new Error('')"
我找到了匹配项,但将 err
替换为空字符串。
最佳答案
这匹配并捕获空字符串,后跟零个或多个未捕获的字符:
(?P<err>).*
您想移动括号内的.*
:
(?P<err>.*)
关于名为捕获的 Python 正则表达式子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848110/