正则表达式删除连字符和空格

itw*_*twb 2 python regex

我有字符串:

<u>40 -04-11</u>
Run Code Online (Sandbox Code Playgroud)

如何删除空格和连字符,使其返回400411?

目前我有这个:

(<u[^>]*>)(\-\s)(<\/u>)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚它为什么不起作用.任何见解将不胜感激.

谢谢

Pau*_*lls 5

(<u[^>]*>)(\-\s)(<\/u>)
Run Code Online (Sandbox Code Playgroud)

上面的模式并没有告诉你的正则表达式在哪里期待数字.

(<u[^>]*>)(?:-|\s|(\d+))*(<\/u>)
Run Code Online (Sandbox Code Playgroud)

这应该让你开始,但不是一个python家伙,我不能给你准确的替换语法.请注意,数字位于重复捕获组中.

编辑:这是一个响应您的评论的编辑.就像我说的,不是一个蟒蛇人,但如果你的舌头恰到好处,这可能会做你需要的.

def repl(matchobj):
        if matchobj.group(1) is None:
            return ''
        else:
            return matchobj.group(1)

source = '<u>40 -04-11</u>40 -04-11<u>40 -04-11</u>40 -04-11'
print re.sub(r'(?:\-|\s|(\d+))(?=[^><]*?<\/u>)', repl, source)
Run Code Online (Sandbox Code Playgroud)

结果是:

>>>'<u>400411</u>40 -04-11<u>400411</u>40 -04-11'
Run Code Online (Sandbox Code Playgroud)

如果以上冒犯了Python神,我保证会牺牲我遇到的下一个PHP开发人员.:)

  • 我不认为他们想要PHP开发人员(我知道我没有). (2认同)