这是Python regex - Replace single quotes and brackets线程的后续操作。在
任务:
输入字符串示例:
RSQ(name['BAKD DK'], name['A DKJ'])
SMT(name['BAKD DK'], name['A DKJ'], name['S QRT'])
期望输出:
^{pr2}$类name['something']
项的数目是变量。在
当前解决方案:
目前,我正在通过两个独立的re.sub()
调用来实现这一点:
>>> import re
>>>
>>> s = "RSQ(name['BAKD DK'], name['A DKJ'])"
>>> s1 = re.sub(r"^(\w+)", "XYZ", s)
>>> re.sub(r"name\['(.*?)'\]", r"\1", s1)
'XYZ(BAKD DK, A DKJ)'
问题:
是否可以将这两个re.sub()
调用合并为一个调用?在
换句话说,我想替换字符串开头的内容,然后替换后面的多个类似的内容,所有这些都一次性完成。在
我已经研究过^{regex.subf()
但没能成功。在
您确实可以使用regex模块和重复捕获。主要的兴趣是您可以检查匹配字符串的结构:
(请注意,您可以将
"name"
替换为\w+
或任何您想要的东西,而不会出现问题。)你可以这么做。虽然我觉得它不太可读。如果你开始添加更多的模式来替换,这样做可能会变得不规则。它利用了替换字符串也可以是函数这一事实。在
请不要在我必须维护的任何代码中这样做。在
您正在尝试解析语法上有效的Python。使用^{} 来完成。它更易读,更容易扩展到新的语法,并且不会在一些奇怪的情况下崩溃。在
工作样品:
印刷品:
^{pr2}$相关问题 更多 >
编程相关推荐