我有一个包含两种不同类型数据的文件,我想用regex解析;但是,这些数据非常相似,我无法找到正确的方法来区分它们。你知道吗
我的文件中有些行的格式如下:
AED=FRI
AFN=FRI:SAT
AMD=SUN:SAT
其他的线是形式的
AED=20180823
AMD=20150914
AMD=20150921
剩下的行是标题,我想丢弃它们。例如
[HEADER: BUSINESS DATE=20160831]
到目前为止,我的解决方案是匹配前三个大写字母和一个等号
r'\b[A-Z]{3}=\b'
但在那之后,我不知道如何区分日期(如20180823)和天数(如星期五:星期六:太阳)。你知道吗
我希望这些解析函数的结果是:
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()]
以下是Python中的解决方案:)
将匹配以数字结尾的所有非空白字符
将匹配
AED=20180823
匹配以字母结尾的所有非空白字符。你知道吗
将匹配
AED=AED=FRI
AFN=FRI:SAT
AMD=SUN:SAT
两者都不匹配
[HEADER: BUSINESS DATE=20160831]
这两者都匹配
用您期望的出现次数替换*会更安全,
(a|b)
是match a或match b使用管道在regex中表示替代项。模式'[A-Z]{3}:[A-Z]{3}|[A-Z]{3}'将同时匹配ABC和ABCABC:ABC。然后使用括号将结果分组:
您可以研究命名组的概念,使其更具可读性。此外,还可以查看match对象的文档以获得有用的信息和方法。你知道吗
相关问题 更多 >
编程相关推荐