python中正则相关:正则概述,匹配数字,匹配单词,匹配字符开头与结尾,单词的边界检测
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),它是一种文本模式,同时也是计算机科学的一个概念,其中包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来才逐渐被广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
import retext = 'The price of the product is $19.9, the quantity is 10.'# 匹配任意字符
# pattern 正则的匹配模式 --> 特殊字符串
# r -> 表示原生字符串,取消字符串中转译含义
any_char = re.findall(r'.', text)
print(any_char)
print('*' * 50)# 匹配数字
num = re.findall(r'\d', text)
print(num)
print('*' * 50)# 匹配所有字母
letters = re.findall(r'[a-zA-Z]', text)
print(letters)
print('*' * 50)# 匹配所有数字和字母
# 方式一:
letterAndNum1 = re.findall(r'[a-zA-Z0-9]', text)
print(f'letterAndNum1:{letterAndNum1}')
# 方式二:
letterAndNum2 = re.findall(r'\w', text)
print(f'letterAndNum2:{letterAndNum2}')# 匹配美元符号
dollars = re.findall(r'\$', text)
print(f'dollars:{dollars}')# 只匹配the字符
the = re.findall(r'the', text)
print(f'the:{the}')# 只匹配the字符不区分大小写
theIgnoreCase = re.findall(r'the', text, re.I)
print(f'theIgnoreCase:{theIgnoreCase}')# 通过竖线通道
the_or_The = re.findall(r'the|The', text)
print(f'the_or_The:{the_or_The}')
执行结果
量词问题
匹配多个字符、匹配多个数字
# 1.匹配所有数字,这里+的意思是一个或者无限个
pattern = r'\d+'result = re.findall(pattern, text)
print(result)
执行结果
匹配所有字母
# 2.匹配所有字母,这里+的意思是一个或者无限个
pattern = r'[a-zA-Z]+'result = re.findall(pattern, text)
print(result)
执行结果
# 2.匹配所有字母,这里+的意思是一个或者无限个
pattern = r'[a-zA-Z]+'result = re.findall(pattern, text)
print(result)
匹配所有的字母和数字
# 3.匹配所有字母和数字
pattern = r'\w+'result = re.findall(pattern, text)
print(result)
其他匹配规则
# 4.匹配所有0个或多个数字
pattern = r'\d*'result = re.findall(pattern, text)
print(result)# 5.匹配2个或3个数字,用大括号表示
# {n}匹配前面的字符出现n次
# {n,m} 匹配前面的字符出现n到m次
# {,m}匹配前面的字符出现0到m次
# {n,}匹配前面的字符出现n次到无限次
pattern = r'\d{2,3}'result = re.findall(pattern, text)
print(result)
# 6.匹配3次个以上的数字,注意3后面不要有空格
pattern = r'\d{3,}'result = re.findall(pattern, text)
print(result)# 6.匹配字符t开头的单词
text1 ='the'
pattern = r'^t\w+'result = re.findall(pattern, text1)
print(result)# 7.匹配字符t结尾的单词
text2 ='eat'
pattern = r'\w+t$'result = re.findall(pattern, text2)
print(result)# 8.匹配字符t开头且t结尾的单词
text2 ='th666at'
pattern = r'^t\w+t$'result = re.findall(pattern, text2)
print(result)# 8.匹配字符t开头且t结尾的且不含数字的字符串
text2 ='that'
text3 ='th666at'
pattern = r'^t[a-zA-Z]+t$'resultHas = re.findall(pattern, text2)
resultHasNot = re.findall(pattern, text3)
print(resultHas)
print(resultHasNot)# 9.单词的边界检测,检测t开头,t结尾,\b表示单词的边界检测
text = 'the price of that product is $19.9998, taet quantity tsst is 108.'
pattern = r'\bt[a-zA-Z]+t\b'rsult = re.findall(pattern, text)
print(rsult)
执行结果