我有一个包含大量非结构化数据的文本文件,我试图使用1个正则表达式从中提取姓名和生日。到目前为止,我遇到的问题是,日期可以在一行结束,在另一行继续,而re.DOTALL似乎不起作用。我想要的数据格式始终为:
姓氏,中间名(有时),名字,f。年月日
这是我的正则表达式:
re.findall(r'\w+,*\sf\.\s\d\d-\d\d-\d\d\d\d', re.DOTALL):
这不会得到以下换行符:
史密斯,约翰
f。25-12-1990
或仅限于以下第一部分:
史密斯,约翰,f。25-12-
1990年
史密斯,约翰,f。25-
12-1990
Tags:
如果希望所有选项与可能换行的日期匹配,可以在所有字符之间重复空白字符0+次
请注意,在您的模式中,重复逗号0+次
,*
,而不是\s
使用
re.DOTALL
使.
匹配换行符,但在您的模式中,您使用的不是点,而是文字点\.
\s
将匹配包含换行符的空白字符。在数据中,日期部分之间有多个换行符。您还可以使用[\r\n]*
来匹配中间的换行符Regex demoPython demo
如果中断仅在连字符之后:
Regex demoPython demo
相关问题 更多 >
编程相关推荐