gpt4 book ai didi

Python,正则表达式替换字符串包含 “/” 、 “(” 和 “)”

转载 作者:行者123 更新时间:2023-11-30 22:26:14 26 4
gpt4 key购买 nike

我想编写一个正则表达式来替换匹配的字符串问题。

A是短字符串,B是包含A的长字符串。

A = "5456-module - PAN-12"
B = "5456-module - PAN-12 (100%); 2883-controller - CHG-24; 2898-battery - BAT-12-100 (12 V/100); 2917-panel - MKT-200 (4 x PAN-12-50)"

我想删除B中的A部分,只要其中包含带“(100%)”的A即可。

这条线效果很好。

Print re.sub(A + r'\s[()]100%[()];\s', "", B)

它返回:

2883-controller - CHG-24; 2898-battery - BAT-12-100 (12 V/100); 2917-panel - MKT-200 (4 x PAN-12-50)

但是,当A字符串中包含“/”和“(”,“)”时。这不起作用。喜欢:

new_A = "5456-module - PAN-12 V/50 Wp (1/2 Inch)"
new_B = "5456-module - PAN-12 V/50 Wp (1/2 Inch) (100%); 2883-controller - CHG-24; 2898-battery - BAT-12-100 (12 V/100); 2917-panel - MKT-200 (4 x PAN-12-50)"

当我运行同一行时:

Print re.sub(new_A + r'\s[()]100%[()];\s', "", new_B). 

没有任何反应。

如何才能使线路正常工作?

最佳答案

第二个示例中的

A 包含正则表达式引擎将其解释为元字符(在本例中为捕获组)的括号。由于您希望它们按字面意思匹配,因此您需要转义它们。这将涉及在每个此类字符之前附加一个反斜杠。

然而,

re 提供了一个不错的小便利函数, re.escape ,这会为您完成此操作。

以下是您需要作为修改后的正则表达式传递的内容:

r'{}\s\(100%\);\s'.format(re.escape(A))

关于Python,正则表达式替换字符串包含 “/” 、 “(” 和 “)”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47278765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com