排除字符串中的单词

时间:2016-11-25 08:52:20

标签: python regex

我需要在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})+$

5 个答案:

答案 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)