Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式识别多个日期格式_Python_Regex - Fatal编程技术网

Python 使用正则表达式识别多个日期格式

Python 使用正则表达式识别多个日期格式,python,regex,Python,Regex,我目前正在学习正则表达式,我有一个系列,其中日期有各种格式,例如: 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/2

我目前正在学习正则表达式,我有一个系列,其中日期有各种格式,例如:

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
我编写了一个正则表达式匹配查询,以满足以下格式的非字符串大小写,但是句子之间的日期显示为false

df.str.match('([0-9]{0,2})[/-]?([0-9]{0,2})[/-]?([0-9]{2,4})')
几乎所有的日期都将使用?由于日、月和年在字符串中出现一次或多次,因此日和月的长度可能为1或2个字符。年份也可以是2-4个字符

一些工作测试用例:

03/25/93 Total time of visit (in minutes):

6/18/85 Primary Care Doctor:
不工作:

sshe plans to move as of 7/8/71 In-Home Services: None

7 on 9/27/75 Audit C Score Current:
当日期在句子的中间时,它不起作用。 我只是想被引导去做我在正则表达式中应该改进的事情,因为我对它还是新手。我也有点困惑,我们把?放在哪里,在{}之前还是之后


谢谢。

请注意,
df.str.match()
使用
re.match()
搜索字符串开头的正则表达式,而
df.str.contains()
使用
re.search()
搜索字符串中的任何匹配项

请参阅python re文档中的,以获得更全面的解释

有关更多详细信息,请参阅文件: 和


请注意,我没有详细检查您的正则表达式,但这应该可以解决您面临的最初问题。

请注意,
df.str.match()
使用
re.match()
在字符串开头搜索正则表达式,而
df.str.contains()使用
re.search()
搜索字符串中任何位置的匹配项

请参阅python re文档中的,以获得更全面的解释

有关更多详细信息,请参阅文件: 和


请注意,我没有详细检查您的正则表达式,但这应该可以解决您所面临的最初问题。

我没有设法让某些东西完美工作,但如果您想从它开始,这里是我的正则表达式:

(?!\s)([(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?]*[.|,| |-|\/]*\d{1,4}[st|nd|th]?)+

您可以对它进行测试。

我没能让某些东西完美工作,但如果您想从它开始,这里是我的正则表达式:

(?!\s)([(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?]*[.|,| |-|\/]*\d{1,4}[st|nd|th]?)+

您可以测试它。

看起来像一个文本挖掘任务,是吗?:)对不起,这个太宽了,恐怕不行。您需要分别匹配每个模式,以便所有模式都不能与另一个正则表达式匹配相同的字符串。看起来像文本挖掘任务,是吗?:)对不起,这个太宽了,恐怕不行。您需要分别匹配每个模式,以便所有模式都不能与另一个正则表达式匹配相同的字符串。