06Python爬虫---正则表达式02之元字符

  元字符表

符号含义
.匹配除换行符以外的任意字符
^匹配字符串的开始位置
$匹配字符串的结束位置
*匹配0次、1次或者多次前面的原子
?匹配0次或1次前面的原子
+匹配1次或多次前面的原子
{n}前面的原子恰好出现n次
{n,}前面的原子至少出现了n次
{n,m}前面的原子至少出现n次,至多出现m次
|模式选择符
()模式单元符

总体来说,元字符可以分为:任意匹配元字符、边界限制元字符、限定符、模式选择符、模式单元等

(1) 任意匹配元字符

例如:我们可以使用正则表达式’.python…’匹配一个’python’字符前面有1位,后面有3位格式的字符

import re

pattern = ".python..."

string = "abcdfphp345pythony_py"

result = re.search(pattern, string)

print("任意匹配元字符结果:%s" % result)

# 任意匹配元字符结果:<_sre.SRE_Match object; span=(10, 20), match='5pythony_p'>
(2) 边界限制元字符

边界限制符,’^’匹配字符串的开始,使用’$’匹配字符串的结束

import re
pattern1 = "^abd"  # 以abd开头的字符串
pattern2 = "^abc"  # 以abc开头的字符串
pattern3 = "py$"  # 以py结尾的字符串
pattern4 = "ay$"  # 以ay结尾的字符串
string = "abcdfphp345pythony_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
result4 = re.search(pattern4, string)
print("结果1:%s" % result1)  # 结果1:None
print("结果2:%s" % result2)  # 结果2:<_sre.SRE_Match object; span=(0, 3), match='abc'>
print("结果3:%s" % result3)  # 结果3:<_sre.SRE_Match object; span=(19, 21), match='py'>
print("结果4:%s" % result4)  # 结果4:None
(3) 限定符

常见的限定符包括*、?、+、{n}、{n,}、{n,m}

import re
pattern1 = "py.*n"  # n和py中间除换行符意外的任意字符
pattern2 = "cd{2}"  # c后出现了2次d
pattern3 = "cd{3}"  # c后出现了3次d
pattern4 = "cd{2,}"  # c后至少出现了2次d
string = "abcdddfphp345pythony_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
result4 = re.search(pattern4, string)
print("限定符结果1:%s" % result1)  # 限定符结果1:<_sre.SRE_Match object; span=(13, 19), match='python'>
print("限定符结果2:%s" % result2)  # 限定符结果2:<_sre.SRE_Match object; span=(2, 5), match='cdd'>
print("限定符结果3:%s" % result3)  # 限定符结果3:<_sre.SRE_Match object; span=(2, 6), match='cddd'>
print("限定符结果4:%s" % result4)  # 限定符结果4:<_sre.SRE_Match object; span=(2, 6), match='cddd'>
(4) 模式选择符

模式选择符’|’
使用模式选择符,可以设置多个模式,匹配时,可以从中选择任意一个模式匹配。
例如:正则表达式’python|php’中,字符串’python’和’php’均满足匹配条件

import re
pattern = "python|php"
string = "abcdfphp345pythony_py"
result = re.search(pattern, string)
print("模式选择符结果:%s" % result)
# 模式选择符结果:<_sre.SRE_Match object; span=(5, 8), match='php'>
(5) 模式单元符

模式单元符(),可以使用’()’将一些原子组合成一个大原子使用,小括号括起来的部分会被当做一个整体去使用

import re
pattern1 = "(cd){1,}"  # cd至少出现一次
pattern2 = "cd{1,}"  # c字母后的d至少出现1string = "abcdcdcdcdfphp345pythony_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
print("结果1:%s" % result1)  # 结果1:<_sre.SRE_Match object; span=(2, 10), match='cdcdcdcd'>
print("结果2:%s" % result2)  # 结果2:<_sre.SRE_Match object; span=(2, 4), match='cd'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值