我有字符串:
Run Code Online (Sandbox Code Playgroud)<u>40 -04-11</u>
如何删除空格和连字符,使其返回400411?
目前我有这个:
(<u[^>]*>)(\-\s)(<\/u>)
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚它为什么不起作用.任何见解将不胜感激.
谢谢
(<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开发人员.:)