Python Regex仅当后跟数字时才有条件地替换值
我正在创建一个正则表达式,它查找左括号“(”并将其替换为减号“-”),但前提是括号后面跟一个数字。我该如何做 我想出了这个密码,但它并没有保留数字:Python Regex仅当后跟数字时才有条件地替换值,python,regex,Python,Regex,我正在创建一个正则表达式,它查找左括号“(”并将其替换为减号“-”),但前提是括号后面跟一个数字。我该如何做 我想出了这个密码,但它并没有保留数字: string1 = '(words) and (9878 )' print(re.sub(r"\([+-]?\d+(?:\.\d+)?", '-', string1)) 结果如下: '(words) and - )' 但是我想要这个: '(words) and -9878 )' 我需要在此处更改什么,以便将“(”替换为“
string1 = '(words) and (9878 )'
print(re.sub(r"\([+-]?\d+(?:\.\d+)?", '-', string1))
结果如下:
'(words) and - )'
但是我想要这个:
'(words) and -9878 )'
我需要在此处更改什么,以便将“(”替换为“-”,但不删除以下数字?您可以在正则表达式中使用带有简化模式的:
重新导入
string1='(单词)和(9878)'
打印(re.sub(r“\(?=[+-]?\d)”,'-',string1))
#=>(字)和-9878)
请参阅和
带有以下内容的变体:
re.sub(r“\([+-]?\d)”,r'-\1',string1)
详情:
-a\(
字符(
-一种与位置匹配的正向前瞻,该位置后面紧跟一个可选的(?=[+-]?\d)
或+
,然后是任意数字-
(?:\。\d+)
模式,则只有强制前缀在这种正向前瞻中才有意义。您可以在正则表达式中使用带有简化模式的前缀:
重新导入
string1='(单词)和(9878)'
打印(re.sub(r“\(?=[+-]?\d)”,'-',string1))
#=>(字)和-9878)
请参阅和
带有以下内容的变体:
re.sub(r“\([+-]?\d)”,r'-\1',string1)
详情:
-a\(
字符(
-一种与位置匹配的正向前瞻,该位置后面紧跟一个可选的(?=[+-]?\d)
或+
,然后是任意数字-
在这种情况下,无需检查前瞻模式中是否有多个数字,或者如果该数字后面有可选的
(?:\。\d+)
模式,则只有强制前缀在这种正向前瞻中才有意义。前瞻:r“\(?=[+-]?\d)”
在正则表达式中就可以了。效果非常好。所以在这种情况下,“=”是前瞻吗?是的,我在下面的答案中解释过。在正则表达式中,r“\((?=[+-]?\d)”
就可以了。效果非常好。所以在这种情况下,“=”是前瞻吗?是的,我在下面的答案中解释过。