括号中对regex的Python引用

2024-03-29 09:47:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,如果字母“t”前面没有数字,就需要删除它。你知道吗

我试着用回复sub我有这个:

f=open('File.txt').read()
g=f
g=re.sub('([^0-9])t','',g)

这将标识要正确删除的字母,但也会删除前面的字符。如何引用替换字符串中带圆括号的正则表达式? 谢谢!你知道吗


Tags: 字符串retxtread字母数字open字符
2条回答

改为使用lookback(或negative lookback)。你知道吗

g=re.sub('(?<=[^0-9])t','',g)

或者

g=re.sub('(?<![0-9])t','',g)

三种选择:

g=re.sub('([^0-9])t','\\1',g)

或者

g=re.sub('(?<=[^0-9])t','',g)

或者

g=re.sub('(?<![0-9])t','',g)

第一个选项是您要查找的内容,即对捕获的字符串的反向引用。\\1将引用第一个捕获的组。你知道吗

Lookarounds不使用字符,因此不需要将它们替换回来。在这里,我对第一个使用了积极的向后看,对第二个使用了消极的向后看。它们不会使用括号中的字符,因此您不会在替换中使用[^0-9][0-9]。最好使用它们,因为它可以防止重叠匹配。你知道吗

正查找确保t前面有一个非数字字符。负lookback确保t前面没有数字字符。你知道吗

相关问题 更多 >