import re
a = 'a,b,c'
print(a.split(',')) # ['a', 'b', 'c']
print(re.split(',',a)) # ['a', 'b', 'c']
a = 'a,b;c?da'
print(re.split('[,;?]',a)) # ['a', 'b', 'c', 'da']
print(re.split(',|;|\?',a)) # ['a', 'b', 'c', 'da']
a = 'a ,b;c?da'
print(re.split('\s,|;|\?',a)) # ['a', 'b', 'c', 'da']
当某个分隔符A可以由其它分隔符组成时,A无效
a = 'a,b;c?,;da;,cccc'
print(re.split(',|;|\?,;|;,',a)) # ['a', 'b', 'c', 'da', '', 'cccc']
print(re.split(',|;|\?,;',a)) # ['a', 'b', 'c', 'da', '', 'cccc']
';,'可以由';'和','组成,所以结构出现了';'和','之间两个符号间的空格
简便方法
a = 'a,b;c?,;da;,cccc'
print(re.split(r"\W+", a)) # ['a', 'b', 'c', 'da', 'cccc']
import re
line = 'abcd efg; hhh , ;jjk,lmn, love ,hello, ,python'
print(re.split(r'[\s|,|;]+',line))
print(re.split(r'([\s|,|;]+)',line))
print(re.split(r'(\s|,|;)+',line))
print(re.split(r'(\s|,|;)\s*',line))
# 结果
['abcd', 'efg', 'hhh', 'jjk', 'lmn', 'love', 'hello', 'python']
['abcd', ' ', 'efg', '; ', 'hhh', ' , ;', 'jjk', ',', 'lmn', ', ', 'love', ' ,', 'hello', ', ,', 'python']
['abcd', ' ', 'efg', ' ', 'hhh', ';', 'jjk', ',', 'lmn', ' ', 'love', ',', 'hello', ',', 'python']
['abcd', ' ', 'efg', ';', 'hhh', ' ', '', ',', '', ';', 'jjk', ',', 'lmn', ',', 'love', ' ', '', ',', 'hello', ',', '', ',', 'python']
形如 (?: )
import re
line = 'abcd efg; hhh , ; love ,hello, ,python'
print(re.split(r'(\s|,|;)\s*',line))
print(re.split(r'(?:\s|,|;)\s*',line))
输出
['abcd', ' ', 'efg', ';', 'hhh', ' ', '', ',', '', ';', 'love', ' ', '', ',', 'hello', ',', '', ',', 'python']
['abcd', 'efg', 'hhh', '', '', 'love', '', 'hello', '', 'python']
注意:
*匹配0或多个正好在它之前的那个字符。*意味着能够匹配任意数量的任何字符。(具有贪婪性质)
?表示非贪婪模式