我需要在python中创建一个正则表达式,我需要提取字符串完全匹配的值
例如:
record
LDL PRODUCTNAME 5.0,PRODUCTNAME 65.6,HDL PRODUCTNAME 34.1
我只需要提取必须提取的PRODUCTNAME的值(即65.6),并且不应从记录中提取其他参数,如LDL PRODUCTNAME和HDL PRODUCTNAME。
但是,当我使用下面的正则表达式来查找CHOLESTROL
的值时,我会找到所有values(i.e, 5.0 65.6 34.1)
,因为它找到了匹配项CHOLESTEROL
。
Regex: Value=^\(?!HDL\s|LDL\)(PRODUCTNAME\d{1}\.\d{1})+$
答案 0 :(得分:1)
您可以使用split
:
s = 'LDL PRODUCTNAME 5.0,PRODUCTNAME 65.6,HDL PRODUCTNAME 34.1'
params = dict([item.rsplit(' ', 1) for item in s.split(',')])
print params.get('PRODUCTNAME')
答案 1 :(得分:0)
为什么不
/,PRODUCTNAME (\d+(?:\.\d+)?),/
答案 2 :(得分:0)
使用以下方法,您可以提取具有或不包含前缀(LDL|HDL)
的特定产品的数字参数:
drug_str = 'LDL CHOLESTEROL 5.0,DIMEDROL 65.6,HDL SEMISTEROL 34.1'
search_drug = 'DIMEDROL'
result = re.search(r'(LDL|HDL)?\s?'+ re.escape(search_drug) + r' ([\d.]+)\b', drug_str)
print(result.group(2))
输出:
65.6
答案 3 :(得分:0)
看看这个
import re
strg = 'LDL PRODUCTNAME 5.0,PRODUCTNAME 65.6,HDL PRODUCTNAME 34.1'
match = re.findall(r'((?!PRODUCTNAME\s)\d*\.\d*(?!,)?)', strg)
print ','.join(match)
或
import re
strg = 'LDL PRODUCTNAME 5.0,PRODUCTNAME 65.6,HDL PRODUCTNAME 34.1'
Productname = 'PRODUCTNAME'
match = re.findall(r'' + re.escape(Productname) + ' (\d*\.\d*(?!,)?)', strg)
output = ','.join(match)
print "{} = {}".format(Productname,output)
答案 4 :(得分:0)
import re
drug_str = 'LDL CHOLESTEROL 5.0,DIMEDROL 65.6,HDL SEMISTEROL 34.1'
search_drug = 'DIMEDROL'
result = re.search(re.escape(search_drug) + r' ([\d.]+)\b', drug_str)
result.group(1)