Skip to main content
 首页 » 编程设计

Python regex 相似表达式

2025年05月04日16exmyth

我有一个包含两种不同类型数据的文件,我想用正则表达式进行解析;但是,数据非常相似,我找不到正确的区分方法。

我的文件中有些行的格式是:

AED=FRI 
AFN=FRI:SAT 
AMD=SUN:SAT 

其他行都是form

AED=20180823 
AMD=20150914 
AMD=20150921 

其余行是标题,我想丢弃它们。例如

[HEADER: BUSINESS DATE=20160831] 

到目前为止,我的解决方案尝试是匹配前三个大写字母和一个等号,

r'\b[A-Z]{3}=\b' 

但在那之后我不确定如何区分日期(例如 20180823)和日期(例如 FRI:SAT:SUN)。

我期望从这些解析函数中得到的结果:

Regex weekday_rx = new Regex(<EXPRESSION FOR TYPES LIKE AED=FRI>); 
Regex date_rx = new Regex(<EXPRESSION FOR TYPES LIKE AED=20160816>); 
 
 
weekdays = [weekday_rx.Match(line) for line in infile.read()] 
dates = [date_rx.Match(line) for line in infile.read()] 

请您参考如下方法:

r'\S*\d$'  

将匹配所有以数字结尾的非空白字符

将匹配 AED=20180823

r'\S*[a-zA-Z]$' 

匹配所有以字母结尾的非空白字符。

将匹配 AED=AED=FRI AFN=周五:周六 AMD=SUN:SAT

两者都不匹配

[HEADER: BUSINESS DATE=20160831]

这将同时匹配

r'(\S*[a-zA-Z]$|\S*\d$)' 

将 * 替换为您期望的出现次数会更安全,(a|b) 是 match a 或 match b