假设我有一个字符串:
s = "4n5n6n"
我想创建一个正则表达式,删除除数字之外的所有内容以及字符串末尾的n
。所以最终的解决方案应该是这样的:
s = "456n"
如果我像这样使用正则表达式:
re.sub(r'[^n$\d]', "", s)
$
似乎在括号内失去意义。解决方案是什么?
答案 0 :(得分:3)
您可以使用以下内容:
re.sub(r'[^n\d]|n(?!$)', "", s)
这将匹配除n
以外的任何非数字和任何字符,或者不在最后的任何n
(“不在最后”表示否定前瞻{{ 1}}内有(?! ... )
。
答案 1 :(得分:1)
另一种方式,也许比@Jerry解决方案更简单易读(这仍然是完美的)是替换任何n
字符后跟一个被捕获的数字的数字:
>>> re.sub(r'n(\d+)', "\g<1>", s)
'456n'