我正在寻找用正则表达式替换双波浪号,但只在单引号内以提高脚本性能。假设我有这样的String:
(10070177,4,72,0,819391,'(OP~~SC~~OC~~OV)'~~10070178,4,72,0,819392,'(OP~~SC~~OC~~OV)')
,我想在OP和SC,SC和OC等之间匹配~~,所以仅在'之间匹配。请注意,我需要匹配双波浪号而不是全部/任何文本。
我的脚本语言是Python
答案 0 :(得分:0)
给出:
>>> s="(10070177,4,72,0,819391,'(OP~~SC~~OC~~OV)'~~10070178,4,72,0,819392,'(OP~~SC~~OC~~OV)')"
您可以使用'
引号来捕获整个组,并仅在该子字符串上替换~
:
>>> re.sub(r"('[^']+')",lambda m: m.group(0).replace('~','!'), s)
(10070177,4,72,0,819391,'(OP!!SC!!OC!!OV)'~~10070178,4,72,0,819392,'(OP!!SC!!OC!!OV)')
这比更复杂的正则表达式更容易(并且更健壮和更快)来完成相同的事情。