python 正则表达式 数字范围_python的正则表达式(常用详解)

今天抽时间给大家整理一下正则表达式,有的同学可能还是不太懂这个东西,这次你看我的帖子,你就明白了,我写的博客真的通俗易懂,真的一点都不难,希望您耐心看完,保管有用。

正则表达式,主要是做什么用的?这个概念得先理解,明白这个,你就能看懂正则一半了,就是用来匹配数据的,好的,接下来给大家上一些代码和截图:

1.单字符

importre#需求一:匹配如下数据中的手机号(11位的数字):#s = "asdfsdg13789898768sdfksn13889898768000000svccv135898987680000000"#res2 = re.findall("\d{11}", s)#print(res2)

#--------------------单字符(元字符)---------------#1、. :匹配任意一个字符(除\n外)#res = re.findall(".", 'abcd1234?_!&\n')#print(res) #打印结果为 ['a', 'b', 'c', 'd', '1', '2', '3', '4', '?', '_', '!', '&']

#2、[] :列举可以匹配的字符#res = re.findall("[1-3]", 'ab243gzyw53cd1234?_!&\n') # 从后面的字符串中,匹配数字1,2,3#print(res) #打印结果为 ['2', '3', '3', '1', '2', '3']#

#res1 = re.findall("[a-c]", 'ab243gzyw53cd1234?_!&\n') # 从后面的字符串中,匹配字母a到c#print(res1) #打印结果为 ['a', 'b', 'c']#

#res1 = re.findall("[a-c0-9A-Z]", 'ab243gzGDRyw53cd1234?_!&\n') # 从后面的字符串中,匹配所有的数字和字母#print(res1) #打印结果为 ['a', 'b', '2', '4', '3', 'G', 'D', 'R', '5', '3', 'c', '1', '2', '3', '4']

#3、\d:匹配任意一个数字#res = re.findall("\d", 'ab243gzyw53cd1234?_!&\n')#print(res) #打印结果为 ['2', '4', '3', '5', '3', '1', '2', '3', '4']

#4、\D:匹配任意一个非数字#res = re.findall("\D",' ab243gzyw53cd1234?_!&\n') # 除数字之外的都能匹配#print(res) # 打印结果为 [' ', 'a', 'b', 'g', 'z', 'y', 'w', 'c', 'd', '?', '_', '!', '&', '\n']

#5、\s:匹配任意一个空白字符(空格键、tab键、\n符)#res = re.findall("\s", 'ab243gzyw5 3cd1 23 4?_!&\n')#print(res) # 打印结果为 [' ', ' ', ' ', ' ', ' ', ' ', ' ', '\n']

#6、\S:匹配任意一个非空白字符#res = re.findall("\S", 'ab2 43gzyw5')#print(res) # 打印结果为 ['a', 'b', '2', '4', '3', 'g', 'z', 'y', 'w', '5']

#7、\w:匹配任意一个单字符(数字、字母、下划线)#res = re.findall("\w", 'ab243gzyw5 3cd1 23 4?_!&\n')#print(res) # 打印结果为 ['a', 'b', '2', '4', '3', 'g', 'z', 'y', 'w', '5', '3', 'c', 'd', '1', '2', '3', '4', '_']

## 8、\W:匹配任意一个非单词字符(数字字母下划线)#res = re.findall("\W", 'ab243gzyw53cd1234?_!&\n')#print(res) # 打印结果为 ['?', '!', '&', '\n']

看代码,可能您有点烦,看不下去,好,我给您上图:

2.字符数量

一般表示范围的:如下图所示

先给大家附上代码,后面才有截图解析

importre#--------------------字符数量的表示---------------#1、{n}:表示前一个字符连续出现n次#res = re.findall("\d{3}", "123aaa1111bb2323fs55555")#print(res) # 打印结果为 ['123', '111', '232', '555']

#2、{n,m}:表示前一个字符连续出现n-m次#res = re.findall("\d{3,5}", "123aaa1111bb2323fs55555")#print(res) # 打印结果为 ['123', '1111', '2323', '55555']

#3、{n,}:表示前一个字符至少连续出现n次#res = re.findall("\d{3,}", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")#print(res) # 打印结果为 ['123', '1111', '2323', '55555', '555565745', '455625765757']

#贪婪模式:python中正则匹配数量的时候,默认是贪婪模式#非贪婪模式:在表示数量范围后面加个?,就可以关闭贪婪模式#{n,m},{3,},+ ,*#res = re.findall("\d{3,}?", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")#print(res) # 打印结果为 ['123', '111', '232', '555', '555', '565', '745', '455', '625', '765', '757']

#4、+:表示前一个字符至少出现1次以上#res = re.findall("[a-z]+", "123aa22a1111bb2323fs55555ss555565745bgg455625765757")#print(res) # 打印结果为 ['aa', 'a', 'bb', 'fs', 'ss', 'bgg']#

## 5、*:表示前一个字符至少出现0次以上#res = re.findall("[a-z]*", "123aa22a1111bb")#print(res) # 打印结果为 ['', '', '', 'aa', '', '', 'a', '', '', '', '', 'bb', '']

#member_id = 120pwd= "123456"data= '{"member_id":"#member_id#","pwd":"#pwd#"}'res= re.findall("#.+?#", data)print(res)

data2= '{"member_id":"#member_id#","pwd":"#pwd#","user":"#aaa#"}'res2= re.findall("#.+?#", data2)print(res2)

截图解析,一张一张来,傻逼也能看得懂,更何况是聪明机智的正在阅读的你呢

另外,这里再给将一个很重要的知识点:贪婪模式与非贪婪模式

因为,涉及到这种模式的,还有 + * 等等,现在拿这两种举例,看下图

有的同学会问,这有什么实际应用呢?举个例子如何,好,继续往下看,

3.字符边界和匹配分组

importre#--------------------字符边界的表示---------------#1、^:表示字符串开头#res = re.findall("^python", "python-00-java-00-php-python")#print(res) # 打印结果为 ['python']

#2、$:表示字符串结尾#res = re.findall("python$", "python-00-java-00-php-python")#print(res) # 打印结果为 ['python']

## 3、\b:表示单词边界#res = re.findall(r"\bpython\b", "python? java-00-java-00-php,python")#print(res) # 打印结果为 ['python', 'python']

#4、\B:表示非单词边界

res = re.findall(r"\Bpython\B", "qqpythonqq? java-00-java-00-php,python")print(res) #打印结果为 ['python']

#--------------------匹配分组的表示---------------#1、|:表示匹配多个规则#匹配3个数字或者三个字母 | 此时可理解为“或者”的意思#res = re.findall("[a-z]{3}|\d{3}", "123aaa11ddd333fff4f4fws")#print(res) # 打印为 ['123', 'aaa', 'ddd', '333', 'fff', 'fws']

## 2、():表示分组

data = '{"member_id":"#member_id#","pwd":"#pwd#","user":"#user#","loan_id":"#loan#"}'

#重点掌握!!!

res = re.findall("#.*?#", data)print(res) #打印为 ['#member_id#', '#pwd#', '#user#', '#loan#']

res= re.findall("#(.*?)#", data)print(res) #打印为 ['member_id', 'pwd', 'user', 'loan']

4.正则参数替换

re模块:使用正则表达式的官方库

re.findall():查找匹配的所有数据,以列表的形式返回

re.search():匹配第一个符合规则的数据,返回一个匹配对象,匹配不到则返回None,此方法常用

re.match():匹配第一个符合规则的数据(必须在字符串的开头),返回一个匹配对象,匹配不到则返回None

re.sub():替换

importre#1、re.search():匹配第一个符合规则的数据,返回一个匹配对象,匹配不到则返回None

data = '{"member_id":"#member_id#","pwd":"#pwd#","user":"#user#","loan_id":"#loan#"}'res= re.search("#(.+?)#", data)print(res)print(res.group())print(res.group(1))#从匹配对象中提取,匹配的内容#group()获取匹配到的数据#group(x)获取匹配到的数据中第x个分组中的内容#print(res.group())#print(res.group(1))

#了解即可#2、re.match():匹配第一个符合规则的数据(必须在字符串的开头),返回一个匹配对象#匹配不到则返回None

data = '{"member_id":"#member_id#","pwd":"#pwd#","user":"#user#","loan_id":"#loan#"}'res= re.match(r"{", data)print(res)classEnvDate:

member_id= 123user= "musen"pwd= "lemonban"loan= 31

#3,sub#data = '{"member_id":"#member_id#","pwd":"#pwd#","user":"#user#","loan_id":"#loan#"}'#data = re.sub("#.+?#",str(EnvDate.member_id),data)#print(data)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答你关于Python正则表达式的问题。 Python正则表达式是一种用来匹配和处理字符串的工具。它可以在字符串中搜索和匹配特定的模式,以实现更高效和精确的数据处理。Python的re模块提供了完整的正则表达式支持,并且非常强大和灵活。 使用Python正则表达式,你可以实现各种字符串操作,比如搜索、替换、分割、提取等等。它的语法相对简单,但是功能非常强大,可以满足大部分的字符串处理需求。 在使用Python正则表达式时,你需要掌握一些基本的语法规则,比如元字符、字符集、重复、分组等等。这些语法规则可以组合在一起,形成复杂的匹配模式,以实现更加精细的字符串处理。 总之,Python正则表达式是一种非常有用的工具,可以大大提高字符串处理的效率和精确度。如果你想深入了解它的用法和技巧,可以查看Python官方文档中关于re模块的详细说明。 ### 回答2: Python正则表达式是一种强大的文本匹配和处理工具,通过使用特定的模式来识别和操作文本中的字符串。正则表达式通常被用于从文本中提取特定的信息、验证输入的有效性、进行替换或搜索等操作。 Python正则表达式的语法使用元字符和特殊字符来定义搜索模式,其中元字符用于描述字符类型或位置,特殊字符用于描述重复次数或匹配方式。常见的元字符包括"."(匹配任意字符)、"\d"(匹配数字字符)、"\w"(匹配字母、数字或下划线字符)、"\s"(匹配空白字符)等。特殊字符包括"*"(匹配前面的模式0次或多次)、"+"(匹配前面的模式1次或多次)、"?"(匹配前面的模式0次或1次),以及花括号{}(指定前面模式的重复次数)等。 使用Python正则表达式时,常见的操作包括匹配、搜索、替换和分割。匹配操作通过`re.match()`或`re.search()`函数实现,用于从字符串的起始位置或任意位置开始匹配;搜索操作通过`re.findall()`或`re.finditer()`函数实现,用于在整个字符串中搜索匹配的内容;替换操作通过`re.sub()`函数实现,用于替换匹配到的内容;分割操作通过`re.split()`函数实现,用于按指定的模式分割字符串。 Python正则表达式还支持分组、捕获、非捕获、反向引用等高级特性,可通过使用括号`()`进行分组,并使用`\number`的方式引用分组匹配到的内容。 总而言之,Python正则表达式提供了一套强大且灵活的工具来处理文本匹配和处理的需求。学习和熟练掌握正则表达式的使用,对于处理和分析文本数据将大有裨益。 ### 回答3: Python正则表达式是一种用来匹配字符串模式的工具。它使用一种特殊的语法来描述字符串的模式,然后通过与给定的字符串进行比较,判断是否匹配。 在Python中,我们使用re模块来使用正则表达式。首先,我们需要导入re模块,然后使用re模块提供的函数来进行匹配操作。 正则表达式中的一些基本概念包括: 1. 字符组:用方括号[]表示,表示匹配其中的任意一个字符。例如[abc]表示匹配字符a、b或c。 2. 量词:用来表示匹配多个字符的数量。例如*表示匹配0个或多个字符,+表示匹配1个或多个字符,?表示匹配0个或1个字符。 3. 元字符:具有特殊含义的字符,例如.表示匹配除换行符外的任意字符,\d表示匹配任意一个数字字符。 4. 转义字符:使用反斜杠\来转义元字符。例如\.表示匹配点字符。 5. 边界匹配:^表示匹配字符串的开头,$表示匹配字符串的结尾。 可以通过这些基本概念进行复杂模式的匹配。例如,使用re模块的match函数可以判断一个字符串是否以某个模式开头,使用search函数可以在字符串中搜索匹配某个模式的子串,使用findall函数可以找到所有匹配的子串。 除了基本概念外,Python正则表达式还提供了一些更高级的功能,例如分组、捕获和替换等。 总之,Python正则表达式是一种强大的工具,可以用于字符串的匹配和处理。掌握正则表达式的基本语法和常用函数,可以帮助我们更高效地处理字符串操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值