在某些整数字符模式后分割字符串

时间:2019-01-13 11:44:16

标签: python regex

我有一个字符串存储在变量mystring中。我想用character 4-digit-integer character模式(即(4位整数))分割字符串。我想这可以使用Python正则表达式来完成。

mystring = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'

所需的输出:

splitstring = ['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']

2 个答案:

答案 0 :(得分:2)

如果您不介意进行一些过滤,则可以:

import re

string = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
result = [m for m in re.split('([^\d(]+\(\d{4}\))\s+', string) if m]
print(result)

输出

['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']

在将split与捕获组一起使用时,在这种情况下,结果将包括该组([^\d(]+\(\d{4}\)),即不是数字也不是开放括号​​的任何内容,紧随其后的是四个用括号括起来的数字。 不排除以下空格\s+

答案 1 :(得分:0)

这是一种简单的方法。

由于括号在RE中有另一种含义(它们称为捕获组),因此您需要像\(那样将其转义以打开括号。 然后,您可以搜索(2018),然后根据需要拆分文本:

import re
s = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
match = re.search(r'\(\d{4}\)', s)

split_string = [ s[:match.end()], s[match.end():] ]
print(split_string) 
# ['Lorem Ipsum (2018)', ' Amet (Lorem Dolor Amet Elit)']