我的正则表达式表达式匹配其他意外组。我的目标是提取指定格式的日期(以字母表示的月份后跟年份,例如2009年3月),但是该表达式匹配并捕获其他格式,例如2009年3月20日。输入如下。
df5 = pd.Series(["04/20/2009", "04/20/09", "4/20/09", "4/3/09", "Mar-20-2009", "Mar 20, 2009", "March 20, 2009", "Mar. 20, 2009", "Mar 20 2009", "20 Mar 2009","20 March 2009", "20 Mar. 2009", "20 March, 2009", "Mar 20th, 2009", "Mar 21st, 2009", "Mar 22nd, 2009", "Feb 2009", "Sep 2009", "Oct 2010", "6/2008","12/2009", "2009", "2010"])
我使用的regex表达式df5.str.extractall(r'(?P<date>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z., -]*\d{4})')
然后在regex101网站上重新检查了我的表达式并对其进行了更改。更改的表达式如下
[^ ](?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z., -]*\d{4}
但是更改后的表达式与数据框中的任何值都不匹配,而使用更改后的表达式,我可以在regex101网站上获取必要的[输出]。我要去哪里错了?
第一个看起来不错,您只需要以一个换行符开始^
:
df5.str.extractall(r'^(?P<date>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z., \-]*\d{4})')
16 0 Feb 2009
17 0 Sep 2009
18 0 Oct 2010
编辑:
您可能需要将该空间添加为必填项,因此请将其从方括号中删除:
df5.str.extractall(r'^(?P<date>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z.,\-]* \d{4})')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句