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)

详细信息

  • \s+
    -匹配1+个空格
  • (?=\d+/\d+/\d+/\d+\s)
    -后跟1+个数字,
    /
    +一个或多个数字两次(类似日期的模式),然后是空白
见下文a部分:

或者,可以使用更复杂的正则表达式来实际匹配这些日期:

\b\d+/\d+/\d+.*?(?=\s*\b\d+/\d+/\d+|$)
见附录a和a:

这里,

  • \b\d+/\d+/\d+/\d+
    -匹配单词边界和类似日期的模式
  • *?
    -任何0个以上字符,尽可能少到第一个位置,然后是
  • (?=\s*\b\d+/\d+/\d+|$)
    -0+空格和类似日期的模式或字符串结尾(
    $

使用括号()后续日期前是否有空格?或者日期可以“粘在一起”吗?我的意思是,我们可以在下一个日期之前用空格分割吗?你还需要结果中的空格吗?字符串的形式是:日期选项卡或空格项目空格项目空格项目空格项目空格项目空格等等…那么我下面的答案是有效的。然后使用第一种方法,因为空间一直在那里。
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)