Python 使用正则表达式从xml标记中删除select字符

Python 使用正则表达式从xml标记中删除select字符,python,regex,xml,Python,Regex,Xml,我正在尝试从xml标记中只删除select字符+后面的任何数字+继续:。。例如: 这可能是因为正则表达式。请尝试改用此正则表达式: text = re.sub('^<[a-zA-Z0-9]+:','<',open(inputfile).read()) 这项工作: 查找r]?+\s*/?> 替换 可读版本: < (?: (?: ( /? ) # (1) \w+ [1-

我正在尝试从xml标记中只删除select字符+后面的任何数字+继续:。。例如:
这可能是因为正则表达式。请尝试改用此正则表达式:

   text = re.sub('^<[a-zA-Z0-9]+:','<',open(inputfile).read())
这项工作:

查找r]?+\s*/?> 替换

可读版本:

 <
 (?:
      (?:
           ( /? )                        # (1)
           \w+ [1-9] :
           ( \w+ \s* /? )                # (2)
      )
   |  (?:
           \w+ [1-9] :
           (                             # (3 start)
                \w+ \s+ 
                (?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]? )+
                \s* /?
           )                             # (3 end)
      )
 )
 >

Regex:?:?/[a-zA-Z]+[0-9]:但是,这是假设您只想搜索一个数字:停止尝试用正则表达式解析XML/HTML,而是使用DOM解析器。选择字符称为名称空间。或者一个允许在转储名称空间之前终止名称空间的解析器again@Matt.G这实际上几乎完美地发挥了作用。。但是,带有/的结束标记不会被删除,除非我将其添加到节中,例如:?有没有办法让它删除/ns。。。是否存在?
 <
 (?:
      (?:
           ( /? )                        # (1)
           \w+ [1-9] :
           ( \w+ \s* /? )                # (2)
      )
   |  (?:
           \w+ [1-9] :
           (                             # (3 start)
                \w+ \s+ 
                (?: " [\S\s]*? " | ' [\S\s]*? ' | [^>]? )+
                \s* /?
           )                             # (3 end)
      )
 )
 >