Luffy Second Modular -- re正则表达式
正则表达式,re模块:
正则表达式,通过不同的组合方式,提取文本中的字符。
import re # 1. match 从开头匹配,要求第一个元素必须是符合要求的,不然就匹配不到 # a = 'abc1d3e' # print(re.match('\d',a)) # 2. search 全局匹配,找到就返回,不会再接着找 # print(re.search('\d',a)) # 3. findall 全局匹配,找到全部符合条件的数据 # print(re.findall('\d',a)) """ . 匹配任意一个字符,除了\n以外的全部字符 ^ 以什么字符开头的,等效于match() $ 以什么字符结尾的 * 匹配*号前面一个字符的0个或者多个 + 匹配前面一个字符一次或者多次 ?匹配前面一个字符0次或者一次 {m} 匹配前一个字符指定次数 {n,m} 匹配前一个字符n - m 次 [] | 或表达式,相当于or [A|a]lex 这个可以匹配alex或者Alex () 分组表达式,(\d)([a-zA-Z]),123alex 返回123 alex \A 表示开头 同^ \Z 表示结尾 同$ \d 表示[0-9] \D 表示非数字 \w 表示[0-9a-zA-Z] \W 表示非[0-9a-zA-Z] \s 匹配不可见字符 \n \t \r '(?P<name>)(?P<age>)',s 用groupdict() 输出,会显示成字典类型,name:**** age:*** 分组匹配 re.I 忽略字符串中的大小写 re.M 匹配多行 re.S 改变.的行为,可以匹配任何的字符,不加的时候\n是匹配不到的 re.X 可以给表达式加上注释 re.search('''\d* # 这是匹配0或多个数字的表达式''',re.X) """ # 4. re.split 把匹配到的字符作为分隔符将字符串分割开,maxsplit 可以指定分割的次数 s = 'abc1d3e' # print(re.split('\d+', s,maxsplit=1)) # \d表示数字 + 表示一个或多个 # 5. re.sub 把匹配到的字符替换成其他的, count 可以指定替换的次数,比如替换一次 # print(re.sub('\d+','--',s,count=1)) # 6. re.fullmatch 完全匹配模式,表达式和字符串要完全符合才能匹配上,否则就无法匹配 s = 'songyuheng@qk365.com' # print(re.fullmatch('\w+@\w+\.(com|cn|edu)',s).group()) # 7. re.compile 先把表达式封装成一个公式并赋值给一个变量,然后通过变量去匹配 pattern = re.compile('\w+@\w+\.(com|cn|edu)') print(pattern.fullmatch(s).group())
自己不知道要干什么的时候就想想你想要什么。
不知道想要什么的时候。
就多想想,说不定想着想着就知道自己想要什么了。
想好了就去试试,说不定你就能拿到你想要的对象了,你不试一下,你就是想你怎么想也拿不到! anyway ..... what ever....
浙公网安备 33010602011771号