D21_2.1_正则表达式_多字符匹配

# (1) 量词基本语法

# 1) . 匹配1个除换行外的任意字符

# 2) ? 匹配0个或者1个a

# 3) + 匹配1个或者多个a

# 4) * 匹配0个或者多个a

# 5) {m,n} 匹配m个至n个a,n可以取到

# {m,} 至少m次

# {m} 必须m次

# (2)贪婪模式与非贪婪模式 (若不加?,匹配的时候默认为贪婪模式)

贪婪模式 : 默认向更多次匹配
非贪婪模式: 默认向更少次匹配

贪婪模式在底层使用的是回溯算法:
回溯算法:默认从左向右进行匹配,一直到最后,直到最后再也匹配不到了,回头,找最后一个能够匹配到的数据

非贪婪模式: 在量词的后面加?,这个语法就是非贪婪,默认向更少次匹配
.?? .+? .*? .{1,25}?

strvar = "刘能和刘德华和刘铁锤子777子888"

#贪婪模式

print(lst = re.findall("刘.",strvar) ) #刘能 刘德 刘铁

print(lst = re.findall("刘.?",strvar) ) #刘能 刘德 刘铁

print(lst = re.findall("刘.*",strvar) ) #[‘刘能和刘德华和刘铁锤子777子888‘]

#非贪婪模式

print(lst = re.findall("刘.??",strvar))   #[‘刘‘, ‘刘‘, ‘刘‘]

print(lst = re.findall("刘.*?",strvar))   #[‘刘‘, ‘刘‘, ‘刘‘]

# (3) 边界符

转义字符 :\b backspace 退格
边界符也用的是\b,要注意转义
例如:word 卡住边界
(1) 卡住左边界 \bw  #取以某字符为开头
(2) 卡住右边界 d\b   #取以某字符为结尾

strvar = "pwd word szf"
lst = re.findall(r"\bw.*",strvar) #[‘word szf‘]
lst = re.findall(r"\bw.*?",strvar) #[‘w‘]
lst = re.findall(r"\bw.*? ",strvar) #[‘word ‘]

lst = re.findall(r"d\b",strvar)
lst = re.findall(r".*d\b",strvar)
lst = re.findall(r".*?d\b",strvar) # [‘pwd‘, ‘ word‘]

# (4) ^   $
^ 以...开头
$ 以...结尾
如果正则表达式里面出现了^ $ ,代表把这个字符串看成一个整体,再去匹配

即如果这个字符串不是以^后面那个字符串为开头,不是以$前面那隔字符串为结尾,匹配出来的就是空

原文地址:https://www.cnblogs.com/banbosuiyue/p/11827213.html

时间: 2025-01-17 03:56:17

D21_2.1_正则表达式_多字符匹配的相关文章

D21_1.1_正则表达式_单个字符匹配

# ### re.findall 找到所有与正则表达式相匹配的字符串 语法: lst = re.findall(正则表达式,字符串) # (1) 预定义字符集 # \d 匹配数字 # \D 匹配非数字 # \w 匹配字母或数字或下划线 (正则函数中,支持中文的匹配) # \W 匹配非字母或数字或下划线 # \s 匹配任意的空白符, 也就是 \n \t \r " " # \S 匹配任意非空白符 # \n 匹配一个换行符 [最好在正则表达式的前面加上r,让转义字符失效,原型化匹配] # \

正则表达式学习(一)-- 字符匹配

文章首发于[sau交流学习社区](https://www.mwcxs.top/page/585.html) 一.前言 正则表达式是匹配模式,要么匹配字符,要么匹配位置. 正则里面的元字符太多了,没有系统性,可以分为: (1)字符匹配攻略 (2)位置匹配攻略 二.字符匹配 包括:两种模糊匹配,字符数组,量词,分支结构. 1.1两种模糊匹配 正则精确匹配乜有意义的,比如正则/saucxs/,只能匹配字符串中的"saucxs"这个子串. var regex = /saucxs/; conso

【正则表达式】——02单个字符匹配

[前言]本节主要讲述匹配单个字符 1. 匹配纯文本 区分大小写 匹配纯文本和搜索功能一致 2. 匹配任意字符——“.” .匹配除了换行符以外的任意字符 注意: [元字符]特殊符号和字符,即所谓的元字符,给予了正则表达式强大的功能和灵活性, 正则表达式是由字符组成的字符串,这些字符可以是文本字符(真正的文本),也可以是元字符(含有特殊含义的字符) 原文地址:https://www.cnblogs.com/testxiaobai/p/10762173.html

JavaScript正则表达式模式匹配(1)——基本字符匹配

1 var pattern=/g..gle/; //点符号表示匹配除了换行符外的任意字符 2 var str='g78gle'; 3 alert(pattern.test(str)); 4 5 6 var pattern=/go*gle/; //o* ,表示0个或者多个o 7 var str='goooooooooooogle'; 8 alert(pattern.test(str)); 9 10 var pattern=/go+gle/; //o+,表示一个或者多个o 11 var str='g

正则表达式中各种字符的意义

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 3.1 普通字符 由所有那些未显式指定为元字符的

正则表达式中各种字符的含义

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 3.1 普通字符 由所有那些未显式指定为元字符的

正则表达式中各字符的含义

正则表达式中各种字符的含义 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的. 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 3.1 普通字符 由

正则表达式_基础篇

正则表达式必知必会正则表达式用处:搜索与替换简单的开始:1.匹配单个字符:.匹配任何一个字符(除去换行符)\加上一个特殊字符:如\\,\d,\w,2.匹配一组字符:[]不匹配任何字符,自用来定义一个字符集合:如[ab]:必须匹配a或b,可用来处理大小写问题[Aa],当然也可以用\i(SAS里面的):[0-9]匹配0到9的数字,[A-Z]匹配A到Z的英文字母:[A-Za-z0-9]表示A-Z和a-z和0-9:[^0-9]表示不匹配0-9的任意数字:若要匹配[]本身,需要反斜杠\[ \]注:-连字符

常用的正则表达式(例如:匹配中文、匹配html)(转载)

匹配中文字符的正则表达式: [u4e00-u9fa5]    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  匹配双字节字符(包括汉字在内):[^x00-xff]  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)  匹配空白行的正则表达式:ns*r  评注:可以用来删除空白行  匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能