Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我正在编写一个python 2.7.6程序,在输入文件中查找日期的所有实例,即(如果一个文件包含“2014年4月9日”“星期二”“1980年2月14日”“圣诞节”,它将在一个文件中查找所有这些实例)。由于日期可以用许多不同的方式表示,我为不同类型的日期使用了单独的正则表达式。我想把所有单独的正则表达式合并成一个大的正则表达式,这样它就可以按照日期在文件中出现的顺序查找每个“类型”的日期 我有以下代码要测试“2014年4月9日”之类的日期 在下一行中,我匹配与1980年2月14日相似的日期,如下所

我正在编写一个python 2.7.6程序,在输入文件中查找日期的所有实例,即(如果一个文件包含“2014年4月9日”“星期二”“1980年2月14日”“圣诞节”,它将在一个文件中查找所有这些实例)。由于日期可以用许多不同的方式表示,我为不同类型的日期使用了单独的正则表达式。我想把所有单独的正则表达式合并成一个大的正则表达式,这样它就可以按照日期在文件中出现的顺序查找每个“类型”的日期

我有以下代码要测试“2014年4月9日”之类的日期

在下一行中,我匹配与1980年2月14日相似的日期,如下所示

matches = re.findall("(?:(?:[0]?[1-9])|(?:[1][0-2]))[-/](?:(?:[012]?[0-9])|(?:[3][01]))[/-][12][0-9][0-9][0-9]",fileText, re.IGNORECASE)
print matches
我想把它们合并成一个正则表达式。我试过了

matches = re.findall("(?:first regular expression|second regular expression)", textFile, re.IGNORECASE)
print matches
但这只是打印了所有日期,如“2014年4月9日”(这是第一个正则表达式的含义),以及“1980年2月14日”(这是第二个正则表达式的含义)


如果您能帮助我找出如何将2个正则表达式转换为1,我们将不胜感激。

只需检查每个正则表达式的每个输入行就可以了吗

for line in input_file:
    regex1 = re.findall(pattern,line)
    regex2 = re.findall(pattern,line)
    if len(regex1) > 0:
        for item in regex1:
            print(item)
    if len(regex2) > 0:
        for item in regex2:
            print(item)

如果您试图处理大量不同的格式并进行验证,请不要仅使用正则表达式。我已经编写了各个类型,现在我只是尝试合并不同的正则表达式。因此,我不认为重新编写正则表达式会很好地利用我的时间。但这一点很好,我将在将来记住。
for line in input_file:
    regex1 = re.findall(pattern,line)
    regex2 = re.findall(pattern,line)
    if len(regex1) > 0:
        for item in regex1:
            print(item)
    if len(regex2) > 0:
        for item in regex2:
            print(item)