Python提取介于两个模式之间的子字符串,不包括浮点数



我使用的是python 2。我需要替换字符串中的两个部分。例如低于

str1 = "product,price=(decimals=4, value=7.505),quantity"
str2 = "product,(subporduct,(price=(decimals=4, value=7.05)),quantity"
str3 = "product,(subporduct,item=2, price=(decimals=4, value=7.05)),quantity"

我需要这样的输出,即价格等于浮动数字

  1. 产品,价格=7.505,数量
  2. 产品,(子产品,(价格=7.05(,数量
  3. 产品,(子产品,项目=2,价格=7.05(,数量

我试过这个,但它离开了最后一个括号,否则它对我来说已经足够好了。

print(re.sub("(?<=price=).+?(?<=value=)", "", str1))

我需要python 2 中的解决方案

您可以使用

re.sub(r'(price=)([^()]*?value=([d.]+))', r'12', str1)

请参阅regex演示详细信息

  • (price=)-组1(1(:price=子串
  • (-一个(字符
  • [^()]*?-除()之外的零个或多个字符尽可能少
  • value=-文字子字符串
  • ([d.]+)-组2(2(:一个或多个数字或.字符
  • )-一个)字符

替换是第1组和第2组值的串联。

最新更新