使用正则表达式拆分逗号,空格或分号分隔的字符串

gho*_*der 3 python regex

我使用正则表达式[,;\s] +来分割逗号,空格或分号分隔的字符串.如果字符串末尾没有逗号,这可以正常工作:

>>> p=re.compile('[,;\s]+')
>>> mystring='a,,b,c'
>>> p.split(mystring)
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

当字符串末尾有逗号时:

>>> mystring='a,,b,c,'
>>> p.split(mystring)
['a', 'b', 'c', '']
Run Code Online (Sandbox Code Playgroud)

我想在这种情况下的输出是['a','b','c'].

关于正则表达式的任何建议?

ins*_*get 7

这是一个非常低技术的东西应该仍然有效:

mystring='a,,b,c'
for delim in ',;':
    mystring = mystring.replace(delim, ' ')
results = mystring.split()
Run Code Online (Sandbox Code Playgroud)

PS:虽然正则表达式非常有用,但我强烈建议再考虑一下它是否适合这里的工作.虽然我不确定编译正则表达式的确切运行时是什么(我最多想的是O(n ^ 2)),但它绝对不比O(n)快,后者是运行时的string.replace.因此,除非您需要使用正则表达式的原因不同,否则应使用此解决方案进行设置


Qta*_*tax 6

尝试:

str = 'a,,b,c,'
re.findall(r'[^,;\s]+', str)
Run Code Online (Sandbox Code Playgroud)