73.正则表达式中分界符的例子

#分界符
'''
^     行首匹配,和在[]里的^不是一个意思。在[]里的^表示“非”的意思
$     行尾匹配
\A    匹配字符串的开始,和^的区别是:\A只匹配整个字符串的开头,即使在
      re.M的模式下也不会匹配其他行的行首
\Z    匹配字符串结束,它和$的区别是:\Z只匹配整个字符串的结尾,即使在
      re.M的模式下也不会匹配其他行的行尾。
      (正则表达式中的re.M表示将字符串视为多行,从而^匹配每一行的行首)
\b    匹配一个单词的边界,也就是值单词和空格间的位置
\B    匹配非单词的边界。这个要仔细理解。
'''
import re
str="than 123 thbn thbn456.\nthcn 789\nthan th-n thdnthbn."

#1.行首尾匹配^$,\A\Z
print("行首尾匹配")
print("^than ",re.findall(r"^than",str,re.M))
print('^th[a-z]n ',re.findall(r'^th[a-z]n',str,re.M))
print("行尾匹配:",re.findall(r'th[a-z]n$',str,re.M))
print("行尾匹配2:",re.findall(r'[0-9]{1,10}.',str,re.M))
print("行尾匹配3:",re.findall(r'[0-9.]{1,10}$',str,re.M))
print("行首尾匹配",re.findall(r'^t.+[0-9]{3}$',str,re.M))
print("只匹配行尾",re.findall(r'\d+$','alal ,b6al 56\nfPython\t4Ac\65',re.M))
print("只匹配行尾",re.findall(r'\d+$',r'alal ,b6al 56\nfPython\t4Ac\65',re.M))
#有'r‘,没r结果不一样。
#'.'为任意单个字符。+为1个或多个。
print("\A匹配:",re.findall(r'\Ath[a-z]n',str,re.M))
print("\Z匹配:",re.findall(r'thbn[.]\Z',str,re.M))
print("\Z匹配:",re.findall(r'thbn[.]\Z',str,re.M))

#2.单词边界匹配\b
print("单词边界匹配")
print(re.findall(r'\bth[a-z]n\b',str))#别忘了加"r"。
print(re.findall(r'\',str))#也可用'\<\>'来匹配单词的开始和结束
print(re.findall(r'\bth[-a-z]n\b',str))#加上连字符,连字符必须放在字符集的前面
print(re.findall(r'th[-a-z]n\b',str))#后面有边界,开头没边界
print(re.findall(r'\bth[a-z]n',str))#开头有边界,后面没边界
print("找出所有数字:",re.findall(r'\d+',str))
print("找出所有数字:",re.findall(r'\B\d+',str))

#3.非单词边界匹配
str2=r'1pycthon py5 2pyc342 pyc1py2py4 pyp3 lpyc l3pyc# pyc'
lst=re.split(r'pyc\B',str2)#按照不是单词的边界分割。如果是单词边界,则不分割
print(lst)

输出:

73.正则表达式中分界符的例子_第1张图片

你可能感兴趣的:(73.正则表达式中分界符的例子)