正则表达式-引号内的某些字符串

时间:2018-07-29 19:20:27

标签: python regex talend

我正在寻找用正则表达式替换双波浪号,但只在单引号内以提高脚本性能。假设我有这样的String:

(10070177,4,72,0,819391,'(OP~~SC~~OC~~OV)'~~10070178,4,72,0,819392,'(OP~~SC~~OC~~OV)')

,我想在OP和SC,SC和OC等之间匹配~~,所以仅在'之间匹配。请注意,我需要匹配双波浪号而不是全部/任何文本。

我的脚本语言是Python

1 个答案:

答案 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)')

这比更复杂的正则表达式更容易(并且更健壮和更快)来完成相同的事情。