Python 提取两个模式之间的子字符串,不包括浮点数
Python extract sub string in between two pattern excluding floating number
我正在使用 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"
我需要这样的输出,即价格等于浮点数
- 产品,价格=7.505,数量
- 产品,(子产品,(价格=7.05),数量
- 产品,(子产品,项目=2,价格=7.05),数量
我试过了,但它留下了最后一个括号,否则对我来说已经足够了。
print(re.sub("(?<=price=).+?(?<=value=)", "", str1))
我需要 python 2
中的解决方案
您可以使用
re.sub(r'(price=)\([^()]*?value=([\d.]+)\)', r'', str1)
见regex demo。 详情:
(price=)
- 第 1 组 (</code>):<code>price=
子串
\(
- 一个 (
字符
[^()]*?
- (
和 )
以外的零个或多个字符尽可能少
value=
- 文字子串
([\d.]+)
- 第 2 组 (</code>):一个或多个数字或 <code>.
个字符
\)
- )
个字符。
替换是第 1 组和第 2 组值的串联。
我正在使用 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"
我需要这样的输出,即价格等于浮点数
- 产品,价格=7.505,数量
- 产品,(子产品,(价格=7.05),数量
- 产品,(子产品,项目=2,价格=7.05),数量
我试过了,但它留下了最后一个括号,否则对我来说已经足够了。
print(re.sub("(?<=price=).+?(?<=value=)", "", str1))
我需要 python 2
中的解决方案您可以使用
re.sub(r'(price=)\([^()]*?value=([\d.]+)\)', r'', str1)
见regex demo。 详情:
(price=)
- 第 1 组 (</code>):<code>price=
子串\(
- 一个(
字符[^()]*?
-(
和)
以外的零个或多个字符尽可能少value=
- 文字子串([\d.]+)
- 第 2 组 (</code>):一个或多个数字或 <code>.
个字符\)
-)
个字符。
替换是第 1 组和第 2 组值的串联。