如何拆分字符串并使用 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
的工作原理:
(
开始捕获组
\(
按字面意思匹配字符 (
[^\)]+
匹配非 )
的一个和无限个字符
\)
按字面意思匹配字符 )
)
结束捕获组
这是我的代码:
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
的工作原理:
(
开始捕获组\(
按字面意思匹配字符(
[^\)]+
匹配非)
的一个和无限个字符
\)
按字面意思匹配字符)
)
结束捕获组