我有一个包含两种不同类型数据的文件,我想用正则表达式进行解析;但是,数据非常相似,我找不到正确的区分方法。
我的文件中有些行的格式是:
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
