Regex 正则表达式在日期拆分字符串并保留它
我有一个要在日期拆分的字符串:Regex 正则表达式在日期拆分字符串并保留它,regex,python-2.7,date,split,Regex,Python 2.7,Date,Split,我有一个要在日期拆分的字符串: 28/11/2016 Mushroom 05/12/2016 Carrot 12/12/2016 Broccoli 19/12/2016 Potato 最终应该是 28/11/2016 Mushroom 05/12/2016 Carrot 12/12/2016 Broccoli 19/12/2016 Potato 很明显,日期改变了,这就很困难了。我已经计算出了正则表达式,但我不知道如何保持分隔符(日期) 如果日期之间始终存在空格,则可以使用拆分方法:
28/11/2016 Mushroom 05/12/2016 Carrot 12/12/2016 Broccoli 19/12/2016 Potato
最终应该是
28/11/2016 Mushroom
05/12/2016 Carrot
12/12/2016 Broccoli
19/12/2016 Potato
很明显,日期改变了,这就很困难了。我已经计算出了正则表达式,但我不知道如何保持分隔符(日期)
如果日期之间始终存在空格,则可以使用拆分方法:
\s+(?=\d+/\d+/\d+\s)
见
详细信息:
-匹配1+个空格\s+
-后跟1+个数字,(?=\d+/\d+/\d+/\d+\s)
+一个或多个数字两次(类似日期的模式),然后是空白/
\b\d+/\d+/\d+.*?(?=\s*\b\d+/\d+/\d+|$)
见附录a和a:
这里,
-匹配单词边界和类似日期的模式\b\d+/\d+/\d+/\d+
-任何0个以上字符,尽可能少到第一个位置,然后是*?
-0+空格和类似日期的模式或字符串结尾((?=\s*\b\d+/\d+/\d+|$)
)$
import re
rx = r"\s+(?=\d+/\d+/\d+\s)"
s = "28/11/2016 Mushroom 05/12/2016 Carrot 12/12/2016 Broccoli 19/12/2016 Potato"
results = re.split(rx, s)
print(results)
\b\d+/\d+/\d+.*?(?=\s*\b\d+/\d+/\d+|$)
import re
rx = r"\b\d+/\d+/\d+.*?(?=\b\d+/\d+/\d+|$)"
s = "28/11/2016 Mushroom 05/12/2016 Carrot 12/12/2016 Broccoli 19/12/2016 Potato"
results = re.findall(rx, s)
print(results)