我有一个字符串:
str1 ="[not,35]"
str1 ="[not,5]"
我希望在保留数字时使用RE来更改文本:
-35
-5
我试过这个:afterRE = re.sub("\[not,\d+\]","-\d",str1)
但它不知道如何保留数字
有这么快的方法吗? (Python)的
答案 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)
\1
是在捕获的组#1中捕获的数字的反向引用,即(\d+)