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