前言:str.split() 和 re.split() 都可以用作字符串的切割,区别是:
- str.split():单一分隔符(默认分隔符为空格)
-
re.split():适用 单一分隔符、多个单一分隔符、多个长短不一的分隔符
re.split()参数:
re.split(pattern, string[, maxsplit=0, flags=0])
pattern 匹配的正则表达式
string 要匹配的字符串
maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
示例1(单个分隔符)
import re
s2 = "a;b;c"
# 打印结果相同
print(s2.split(";")) # 打印结果:['a', 'b', 'c']
print(re.split(";", s2)) # 打印结果:['a', 'b', 'c']
import re
s1 = "a b s_c d"
print(s1.split()) 打印结果:['a', 'b', 's_c', 'd']
# 匹配一个空格符
print(re.split("\s", s1)) 打印结果:['a', 'b', '', 's_c', '', 'd']
# 匹配一个或多个空格符
print(re.split("\s+", s1)) 打印结果:['a', 'b', 's_c', 'd']
示例2(多个单一分隔符)
import re
s1 = "hi?how,are?you;i,am,fine"
"""
多个单一 分隔符 时 ,"[]"与 "|"的 效果是一样的,但是 请注意 使用 “|”时 某些字符 需要转义
"""
print(re.split(r"\?|,|\;", s1)) 打印结果:['hi', 'how', 'are', 'you', 'i', 'am', 'fine']
print(re.split(r"[?,;]", s1)) 打印结果:['hi', 'how', 'are', 'you', 'i', 'am', 'fine']
示例3(多个长短不一的分隔符)
"""
多个长短 不一的的分隔符的分隔符时, 就应该使用 "|"
\s:匹配空格
"""
import re
s1 = "nice, to;?meet\you;too"
# 注意转义
print(re.split(r",\s|;\?|\\|;", s1)) 打印结果:['nice', 'to', 'meet', 'you', 'to']
# 简便用法
print(re.split(r"\W+", s1)) 打印结果:['nice', 'to', 'meet', 'you', 'to']
"""
\W+:匹配一个或多个非字母进行切割,匹配到的非字母不缓存;
(\W+):匹配一个或多个非字母进行切割,匹配到的非字母全部缓存;
(\W)+:匹配一个或多个非字母进行切割,匹配到的非字母缓存最后一位;
[\W]+:匹配一个或多个非字母进行切割,匹配到的非字母不缓存;(跟\W+一样)
[\W+]:匹配一个非字母进行切割,匹配到的非字母不缓存(加号只是相当于一个符号,但与\W含义重叠,无效)。
"""