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

2024-03-29 10:26:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找正则表达式来取代双颚化符,但只有在单引号内,以提高我的脚本性能。假设我有这样的字符串:

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

我想在OP和SC,SC和OC之间匹配~~所以只有那些在'。请注意,我需要匹配双颚化符,而不是所有/任何文本。你知道吗

我的脚本语言是Python


Tags: 字符串文本脚本性能脚本语言ovscoc
1条回答
网友
1楼 · 发布于 2024-03-29 10:26:07

给出:

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

这比一个更复杂的正则表达式做同样的事情更容易(而且更健壮、更快)。你知道吗

相关问题 更多 >