2015-02-12 72 views
0

我想解析一些日期與以下正則表達式。但它似乎只用一些連字符。請看下面的鏈接。它不符合某些日期。我添加了特定的連字符,但它只能在rgex101.com中使用。不在Python中。python正則表達式似乎不能用一些連字符

((?:(?<=)|^)((?:0?[1-9]|1[0-2])?[/-] ?(?:[12][0-9])?[0-9]{2})\b(?:[\s-]+)[/-]{0,2}\s*\b((?:0?[1-9]|1[0-2]) ?[/-] ?(?:[12][0-9])?[0-9]{2})\b) 

https://regex101.com/r/vI6qN1/1

+0

請注意'[0-9]'相當於'\ d'。 – FMc 2015-02-12 09:21:38

回答

1

你只需要添加多修改

>>> re.findall(r'(?m)((?:(?<=)|^)((?:0?[1-9]|1[0-2])?[/-] ?(?:[12][0-9])?[0-9]{2})\b(?:[\s-]+)[/-]{0,2}\s*\b((?:0?[1-9]|1[0-2]) ?[/-] ?(?:[12][0-9])?[0-9]{2})\b)', s) 
[('02/2003-01/2005', '02/2003', '01/2005'), ('01/2002-01/2003', '01/2002', '01/2003'), ('01/2005-02/2007', '01/2005', '02/2007'), ('02/2003-01/2005', '02/2003', '01/2005'), ('01/2002-01/2003', '01/2002', '01/2003'), ('03/1999-01/2002', '03/1999', '01/2002')] 

無論何時使用錨點,最好添加多行修改器。

實施例:

>>> s = """  01/2013-11/2014 
     01/2010-12/2012 

     01/2009-01/2010 


     03/2007-12/2009 


02/2003-01/2005 

01/2002-01/2003 


01/2005-02/2007 

02/2003-01/2005, 

01/2002-01/2003, 


, 03/1999-01/2002, 
""" 
>>> re.findall(r'((?:(?<=)|^)((?:0?[1-9]|1[0-2])?[/-] ?(?:[12][0-9])?[0-9]{2})\b(?:[\s-]+)[/-]{0,2}\s*\b((?:0?[1-9]|1[0-2]) ?[/-] ?(?:[12][0-9])?[0-9]{2})\b)', s) 
[('02/2003-01/2005', '02/2003', '01/2005'), ('02/2003-01/2005', '02/2003', '01/2005'), ('01/2002-01/2003', '01/2002', '01/2003'), ('03/1999-01/2002', '03/1999', '01/2002')] 
>>> re.findall(r'(?m)((?:(?<=)|^)((?:0?[1-9]|1[0-2])?[/-] ?(?:[12][0-9])?[0-9]{2})\b(?:[\s-]+)[/-]{0,2}\s*\b((?:0?[1-9]|1[0-2]) ?[/-] ?(?:[12][0-9])?[0-9]{2})\b)', s) 
[('02/2003-01/2005', '02/2003', '01/2005'), ('01/2002-01/2003', '01/2002', '01/2003'), ('01/2005-02/2007', '01/2005', '02/2007'), ('02/2003-01/2005', '02/2003', '01/2005'), ('01/2002-01/2003', '01/2002', '01/2003'), ('03/1999-01/2002', '03/1999', '01/2002')] 

見有在比賽結果的差。

+0

你可以用're.MULTILINE'參數添加多行修飾符。 – 2015-02-12 09:17:05

+0

如果您在https://regex101.com/r/vI6qN1/1中查看我的代碼,我在那裏添加了「gmi」參數。它代表多行。我會檢查你的代碼。 – user3116355 2015-02-12 09:21:04

+0

是的,但我認爲你沒有在你的代碼中添加該代碼.. – 2015-02-12 09:22:01

相關問題