正则表达式 - 在保持数字的同时替换字符

时间:2018-03-14 13:46:18

标签: python regex

我有一个字符串:

str1 ="[not,35]"
str1 ="[not,5]"

我希望在保留数字时使用RE来更改文本:

-35
-5

我试过这个:afterRE = re.sub("\[not,\d+\]","-\d",str1)

但它不知道如何保留数字

有这么快的方法吗? (Python)的

2 个答案:

答案 0 :(得分:3)

编辑现在处理可选 - 在数字之前。

在re中使用()创建一个组,然后在结果中使用该组,例如

str1 ="[not,-35]"
afterRE=re.sub("\[not,(-?\d+)\]",r"[hello,\1]",str1)

结果

'[hello,-35]'

在re中,由()创建的组从1开始编号,在替换字符串中,\ 1指的是第一个(在这种情况下,仅)组,并扩展到该组的文本。你可以嵌套组,编号总是按开头的顺序排列(。所以在像(\d(\d+))这样的表达式中,1表示所有数字,而\ 2表示第二个数字。

答案 1 :(得分:0)

您可以将此正则表达式与捕获组一起使用来完成工作:

str1 = re.sub(r'\[not,(\d+)\]', r'-\1', str1)

RegEx Demo

\1是在捕获的组#1中捕获的数字的反向引用,即(\d+)