1.原子
原子是正则表达式最基本的组成单位,普通字符(数字、字母和下划线)、非打印字符(换行符、制表符)、通用字符(\w、\d、\s等)和原子表都可以是原子
import re
pattern = '\n'
pattern1 = "占卜家"
string = '''占卜家
小丑
魔术师
无面人
秘偶大师
诡法师
古代学者
奇迹师
诡秘侍者
愚者'''
result = re.search(pattern,string)
result1 = re.search(pattern1,string)
print(result)
print(result1)
输出结果:
<re.Match object; span=(3, 4), match='\n'>
<re.Match object; span=(0, 3), match='占卜家'>
它的意思是我们找到了一个位置范围在索引(0,4)的匹配符“\n”
2.原字符
任意匹配元字符
. (点号):匹配除换行符以外的任何单个字符。
我们用 “..侍.” 会匹配一个“侍”字符前面带两个、后面带一个的字符,也就是我们匹配了“诡秘侍者”这个字符,比如我们想查“你接受这个命运吗”是谁说的,在这段字符前面加点号,就知道是空想天使亚当说的啦~
边界限制元字符
^ (脱字符):匹配输入字符串的开始位置。
$ (美元符号):匹配输入字符串的结束位置。
想知道老尼尔的墓志铭是什么,直接搜全文占用计算机资源很大,如果我们知道大致范围,就可以用“^如果不能拯救她”从这一段开始搜索,也可以从“那就去陪伴她$”开始搜索。
限定符
* (星号):匹配前面的表达式零次或多次。
我想要匹配克莱恩扮演小丑时的笑容。从文本“梅丽莎和班森略显茫然地望向对面的小丑,只见他满是红黄白等各色油彩的脸上,嘴角高高翘起,固定着一个快乐的笑容,浮夸的笑容,滑稽的笑容。 ”中匹配。
import re
string = "梅丽莎和班森略显茫然地望向对面的小丑,只见他满是红黄白等各色油彩的脸上,嘴角高高翘起,固定着一个快乐的笑容,浮夸的笑容,滑稽的笑容"
pattern1 = "...笑.*,"
result = re.search(pattern1,string)
print(result)
匹配结果中,因为*后面还有一个逗号,所以只有两个结果,没有逗号的话,前面的字符可以匹配3个。
<re.Match object; span=(48, 60), match='快乐的笑容,浮夸的笑容,'>
+ (加号):匹配前面的表达式一次或多次。
? (问号):匹配前面的表达式零次或一次。
{n,m}(大括号):匹配前面的原子至少至少出现n次,至多出现m次。
模式单元符
() (圆括号):分组表达式,用于限定操作符的作用范围和优先级。
模式选择符
| (竖线):表示逻辑或,用于匹配多个表达式中的任意一个。