gpt4 book ai didi

python - 使用文本中存在模式的正则表达式拆分字符串

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:24 25 4
gpt4 key购买 nike

我有很多字符串需要用逗号分隔。示例:

myString = r'test,Test,NEAR(this,that,DISTANCE=4),test again,"another test"'
myString = r'test,Test,FOLLOWEDBY(this,that,DISTANCE=4),test again,"another test"'

我想要的输出是:

["test", "Test", "NEAR(this,that,DISTANCE=4)", "test again", """another test"""] #list length = 5

我不知道如何在一个项目中的“this,that,DISTANCE”之间保留逗号。我试过这个:

l = re.compile(r',').split(myString) # matches all commas
l = re.compile(r'(?<!\(),(?=\))').split(myString) # (negative lookback/lookforward) - no matches at all

有什么想法吗?假设允许的“功能”列表定义为:

f = ["NEAR","FOLLOWEDBY","AND","OR","MAX"]

最佳答案

你可以使用

(?:\([^()]*\)|[^,])+

参见 the regex demo .

(?:\([^()]*\)|[^,])+ 模式匹配括号之间任何子字符串的一次或多次出现,没有 (), 以外的任何字符。

参见 Python demo :

import re
rx = r"(?:\([^()]*\)|[^,])+"
s = 'test,Test,NEAR(this,that,DISTANCE=4),test again,"another test"'
print(re.findall(rx, s))
# => ['test', 'Test', 'NEAR(this,that,DISTANCE=4)', 'test again', '"another test"']

关于python - 使用文本中存在模式的正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53432915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com