11

我想用与标记字符数相同的重复字符序列替换 XML 标记。

例如:

<o:LastSaved>2013-01-21T21:15:00Z</o:LastSaved>

我想将其替换为:

#############2013-01-21T21:15:00Z##############

我们如何使用 RegEx 呢?

4

1 回答 1

22

re.sub接受一个函数作为替换:

re.sub(pattern, repl, string, count=0, flags=0)

Ifrepl是一个函数,每次出现不重叠的模式时都会调用它。该函数采用单个匹配对象参数,并返回替换字符串。

这是一个例子:

In [1]: import re

In [2]: def repl(m):
   ...:     return '#' * len(m.group())
   ...: 

In [3]: re.sub(r'<[^<>]*?>', repl,
   ...:     '<o:LastSaved>2013-01-21T21:15:00Z</o:LastSaved>')
Out[3]: '#############2013-01-21T21:15:00Z##############'

我使用的模式可能需要一些修饰,我不确定匹配 XML 标记的规范解决方案是什么。但你明白了。

于 2013-01-21T21:49:09.377 回答