繁体   English   中英

使用正则表达式使用python解析字符串

[英]use regex to parse string using python

我正在为我的客户开发示例代码,之前没有用 Python 进行过编程。 如何使用正则表达式提取下面的文本?

RSH|^~\&|MIC|SCC|MS4OD|A|201804060738||ORU^R01|0137245|P|2.2
KID|||10552884||Fer^Huh^GRV||20223164433|M||W|193 Biop Mill 

我想从第一行中提取 0137245,从第二行中提取 10552884。

RSH|^~\&|MIC|SCC|MS4OD|A|201804060738||ORU^R01|0137246|P|2.3
KID|||10552885||Fer^Huh^GRV||2023164434|M||W|193 jason Mill 

我想从第一行中提取 0137246,从第二行中提取 10552885。

示例 3

RSH|^~\&|MIC|SCC|MS4OD|A|201804060738||ORU^R01|01372451.1|P|2.2
KID|1||10552884||Fer^Huh^GRV||20223164433|M||W|193 Biop Mill 

我想从第一行中提取 01372451.1,从第二行中提取 10552884。

示例 4

RSH|^~\&|MIC|SCC|MS4OD|A|201804060738||ORU^R01|01372451.1|P|2.2
KID|1|2|10552884||Fer^Huh^GRV||20223164433|M||W|193 Biop Mill

我想从第一行中提取 01372451.1,从第二行中提取 10552884。

有什么建议?

根据您给出的示例,您可以使用

regex1=re.compile('\|\|ORU\^R01\|(\d+(?:\.\d+)?)\|')
regex2=re.compile('^KID\|\d?\|\d?\|(\d+)\|')

match1=regex1.search(firstRow)
if match1 is not None:
    print(match1.groups()[0])

match2=regex2.search(secondRow)
if match2 is not None:
    print(match2.groups()[0])

这是从行或任意行数中获取数字的解决方案

str = 'RSH|^~\&|MIC|SCC|MS4OD|A|201804060738||ORU^R01|0137246|P|2.3KID|||10552885||Fer^Huh^GRV||2023164434|M||W|193 jason Mill '
res = re.findall(r'\b\d{7,8}\b',str)
print(res)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM