如何按<html>
和</mainbody>
替换<4>
和</8>
等模式。这里4和8是&lt;&gt;内的字母数。
输入将从文件中获取。
import re
def main():
fh=open("input.txt")
pattern=re.compile("</?[a-zA-Z]+>") #regular expression to find patterns <html>, </html>
for line in fh:
print(re.sub(pattern,"***",line.strip()))
if __name__=="__main__":main()
答案 0 :(得分:1)
使用自定义方法返回匹配的长度:
def get_length(obj):
s = obj.groups()[0]
return '</{}>'.format(len(s[1:])) if s.startswith('/') else '<{}>'.format(len(s))
>>> re.sub("<(/?[a-zA-Z]+)>", get_length, '<html>')
'<4>'
>>> re.sub("<(/?[a-zA-Z]+)>", get_length, '</html>')
'</4>'
我希望你意识到你的正则表达式是非常基本的,并且它不会处理具有正确属性的标签。