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

时间:2017-06-01 21:08:14

标签: python regex

我有一个名为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"]

1 个答案:

答案 0 :(得分:1)

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

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

<强>解释

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

  • \[捕获文字[。
  • w+捕获一个或多个字母或数字(或下划线)。
  • legend捕获了一个字面上的&#34;传奇&#34;被空间包围。
  • \d+/\d+/\d+是标准日期捕获。

当然,您会获得一些前导/尾随空格,但您可以使用.rstrip()

进行修复