在python中使用正则表达式从大字符串中提取字符串列表

在python中使用正则表达式从大字符串中提取字符串列表,python,regex,Python,Regex,我有一个叫做x的大字符串 在字符串中,我有一个特定的模式,我想提取模式之间的字符串 在字符串中,我有一个模式,它由一个方括号组成,方括号中有一些数字或字母(或两者都有),后面是单词legend,后面是dd/mm/yyyy或d/m/yyyy格式的日期。所以我想找到的模式是,例如:“[Something]legend dd/mm/yy”。 现在,在我找到这个模式之后,我想将该模式之后的所有字符串添加到一个列表中,直到下一次该模式存在。同样在最终模式之后的最后一种情况下,字符串的最后一个元素只是字符串

我有一个叫做x的大字符串

在字符串中,我有一个特定的模式,我想提取模式之间的字符串

在字符串中,我有一个模式,它由一个方括号组成,方括号中有一些数字或字母(或两者都有),后面是单词legend,后面是dd/mm/yyyy或d/m/yyyy格式的日期。所以我想找到的模式是,例如:
“[Something]legend dd/mm/yy”。

现在,在我找到这个模式之后,我想将该模式之后的所有字符串添加到一个列表中,直到下一次该模式存在。同样在最终模式之后的最后一种情况下,字符串的最后一个元素只是字符串的剩余部分

例如:

"this is test data [3232] legend 2/1/2014 Who was a wonderful gentleman. Note there was another [dsf] legend 03/02/2015 also was great and there is also a cat [fsfs] legend 02/0/2014 test test test"
输出:

list = ["Who was a wonderful gentleman. Note there was another", "also was great and there is also a cat", "test test test"]

这是一个相当简单的正则表达式:

results = re.split('\[\w+\] legend \d+/\d+/\d+', input_string)
说明:

re.split(ptrn,string)
找到一个模式,然后在该模式上拆分输入字符串并返回一个列表。该模式在过程中被“消耗”或删除。至于模式:

  • \[
    捕获文字[
  • w+
    捕获一个或多个字母或数字(或下划线)
  • legend
    捕获由空格包围的文字“legend”
  • \d+/\d+/\d+/\d+//code>是标准的日期捕获

当然,你会得到一些前导/尾随空格,但是你可以用
.rstrip()

来解决这个问题。到目前为止,你尝试了什么?什么不起作用?我想你已经差不多做到了,试试
re.split