如何拆分字符串并使用 python re 库保留分隔符?

How do I split a string and keep the separators using python re library?

这是我的代码:

import re
string = r"('Option A' | 'Option B') & ('Option C' | 'Option D')"
word_list = re.split(r"[\(.\)]", string)
-> ['', "'Option A' | 'Option B'", ' & ', "'Option C' | 'Option D'", '']

我想要以下结果:

-> ["('Option A' | 'Option B')", ' & ', "('Option C' | 'Option D')"]

您可以使用re.findall来捕获每个括号组:

import re
string = r"('Option A' | 'Option B') & ('Option C' | 'Option D')"
pattern = r"(\([^\)]+\))"
re.findall(pattern, string)
# ["('Option A' | 'Option B')", "('Option C' | 'Option D')"]

这也适用于 re.split

re.split(pattern, string)
# ['', "('Option A' | 'Option B')", ' & ', "('Option C' | 'Option D')", '']

如果您想使用 re.split 删除空元素,您可以:

[s for s in re.split(pattern, string) if s]
# ["('Option A' | 'Option B')", ' & ', "('Option C' | 'Option D')"]

pattern 的工作原理:

  • ( 开始捕获组
  • \( 按字面意思匹配字符 (
  • [^\)]+ 匹配非 )
  • 的一个和无限个字符
  • \) 按字面意思匹配字符 )
  • )结束捕获组