python的正则表达式

…衆ロ難τιáo~ 提交于 2020-01-25 23:39:40

1.re.findall("a","ab")

  a:匹配规则  ab:要匹配的内容

  结果以列表的形式返回:['a']

2.元字符:".","^","$","*","+","?","{ }","[ ]","|","( )","\"

  ".":匹配除换行符“\n”以外任何字符;

import re
A = re.findall('ab.d',"abcdefg")
B = re.findall('ab.e',"abcdefg")

print(A) #['abcd']
print(B) #[]

 

  "^":匹配字符串开头

    

import re
A = re.findall('^ab',"abcdefg")
B = re.findall('^bc',"abcdefg")

print(A) #['ab']
print(B) #[]

  "$":匹配字符串结尾

import re
A = re.findall('ab$',"abcdefg")
B = re.findall('fg$',"abcdefg")

print(A) #[]
print(B) #['fg']

  "*":匹配前一个字符0次或无限次

import re
A = re.findall('ab*',"abbdefg")
B = re.findall('ab*',"acdefg")

print(A) #['abb']
print(B) #['a']

  "+":匹配前一个字符1次或无限次

  "?":匹配前一个字符0次或1次

  "{n}":匹配前一个字符n次

  "{n,m}":匹配前一个字符n至m次(闭区间)

  "[ab]":匹配a或b

import re
A = re.findall('a[bc]d',"abcdefg")
B = re.findall('a[bc]d',"abdefg")
C = re.findall('a[bc]d',"acdefg")

print(A) #[]
print(B) #['abd']
print(C) #['acd']

  "\":1.反斜杠后面跟元字符,使元字符去除特殊功能

    2.后面跟普通字符,产生特殊功能

    3.引用序列对应的字组所匹配的字符串

import re
A = re.search(r"(alex)(eric)com\2","alexericcomeric").group()

print(A) #alexericcomeric

 

    \d:匹配任何十进制数,相当于[0-9]

    \D:匹配任何非数字字符,相当于[^0-9]

    \s:匹配任何空白字符,相当于[\t\n\r\f\v]

    \S:匹配任何非空白字符,相当于[^\t\n\r\f\v]

    \w:匹配任何字母数字字符,相当于[a-zA-z0-9]

    \W:匹配任何非字母数字字符,相当于[^a-zA-z0-9]

    \b:匹配一个单词边界,就是指单词和空格间的位置

3.“*”、“+”、“?”都是贪婪匹配(指尽可能多的匹配),在后面加个"?",可以该非贪婪模式,但如果前后均有限制条件,则取括号中的值

import re
A = re.findall(r"a(\d+?)","a23b") #非贪婪模式
B = re.findall(r"a(\d+)","a23b")

print(A) #['2']
print(B) #['23']
import re
A = re.findall(r"a(\d+?)b","a23b")
B = re.findall(r"a(\d+)b","a23b")

print(A) #['23']
print(B) #['23']

4.r表示原生字符,也就是说不转义字符不需要再次被转义

  比如你要表示‘\n’,可以这样:r'\n'
  但是如果你不用原生字符 而是用字符串你得这样:‘\\n’

5.re.I:使匹配对大小写不敏感

  re.L:做本地化识别(locale-aware)匹配

  re.M:多行匹配,影响^和$

  re.S:使“.”匹配包括换行在内的所有字符

  re.U:根据Unicode字符集解析字符

6.group():返回被RE匹配的字符串

  start():返回匹配开始的位置

  end():返回匹配结束的位置

  span():返回一个元组包含匹配(开始,结束)的位置

 7.如果在正则表达式中使用了"()",匹配结果为括号中的内容,使用"?:"可以变为非捕获

import re
A = re.findall(r"www.(baidu|abc).com","www.baidu.com")
B = re.findall(r"www.(?:baidu|abc).com","www.baidu.com")

print(A) #['baidu']
print(B) #['www.baidu.com']

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!