当前位置:   article > 正文

Python—re正则表达式_re 匹配数字

re 匹配数字

1,首先需导入模块import re。

2,在一串字符中,findall方法可以获取全部能够匹配的片段,并把结果放在一个列表中。

书写方式:

re.findall(正则表达式(规定匹配规则),被匹配的对象)。

3,使用findall方法匹配普通字符:

 4,

一:

\d获取所有数字0-9,相当于[0-9]

\D获取所有非数字,相当于[^0-9]

二:

\w匹配所有单词字符,例如字母、数字、下划线、中文

\W匹配剩下的,空格、换行符、特殊字符等

5, 字符集用[]中括号表示,匹配任意符合条件的字符。字符集内^表示非,例如[^0-9]表示不是0-9的元素都符合。

  1. s = 'a_1a_2, a_3多了a_4没错#'
  2. #定义了s这个字符串
  3. re.findall('a_[13]',s)
  4. #字符集中有13,所以可以与s中的a_1和a_3进行匹配,如果存在则输出相应的值
  5. 输出['a_1', 'a_3']
  6. re.findall('a_[^13]',s)
  7. #上三角^表示非,匹配s中a_加一个字符但不包括a_1和a_3的其他所有符合条件的字符
  8. 输出['a_2', 'a_4']
  9. re.findall('a_[1-3]',s) #匹配a_(接下来字符在13之间的值都符合条件,包括13)
  10. 输出['a_1', 'a_2', 'a_3']
  11. re.findall('[^a-zA-Z0-9_]',s)
  12. #匹配除了字母数字下划线的所有字符
  13. 输出[',', ' ', '多', '了', '没', '错', '#']
  14. re.findall('[^\w]',s)
  15. #匹配所有不是\w包含的字符,即匹配\W
  16. 输出[',', ' ', '#']

6,

\s匹配空白字符:' '空格、\n换行符、\t制表符、\r回车符

\S匹配任意非空白字符

7,

大括号{} 中的数值用来标记要匹配字符的数量。

例:a_{3,6}表示a_后面要接3位到6位字符才符合条件

例:a_{3}表示a_后面要接3位字符才符合条件

贪婪模式:默认的,选取尽可能多的匹配字符,例如a_{3,6}尽量选取后接字符多的;

非贪婪模式:用?表示,即选取最少的匹配字符,a_{3,6}?就相当于a_{3}。

 8,

匹配特殊数量的字符的符号:

*匹配任意数量的字符

?匹配0或1个字符,这也是它可以设置非贪婪模式的原因,被设置为最多匹配一个字符的贪婪模式。

+匹配1个或多个字符

.匹配除换行符\n以外任意一个字符

提示:特殊数字符号控制的是紧挨着该符号左边的字符或字符集

  1. s = 'hell#hello$helloo' #定义了s这个字符串
  2. re.findall('hello*',s)
  3. #从hello这个字符串的第一个字符开始匹配,*表示匹配任意个字符,所以输出的三个字符串都符合条件
  4. 输出['hell', 'hello', 'helloo']
  5. re.findall('hello?',s)
  6. #❓表示匹配0或1个字符,所以下面三个输出都满足条件,但helloo只输出hello
  7. 输出['hell', 'hello', 'hello']
  8. re.findall('hello+',s)
  9. #因为+表示匹配一个或多个字符,就是说匹配的条件是hello后面加字符可以,但不能hello少字符
  10. 输出['hello', 'helloo']
  11. re.findall('he.','hello') #.匹配除换行符\n以外任意一个字符
  12. 输出['hel']
  13. re.findall('he.','he\nllo') #.匹配除换行符\n以外任意一个字符
  14. 输出[]

9,

边界字符:

^表示在行的开始处进行匹配,例如^abc可以匹配abc000但不能匹配000abc,即匹配以abc开头的字符串;

$表示在行的末尾处开始匹配,例如abc$可以匹配000abc但不能匹配abc000,匹配以abc结尾的字符串。

  1. s = 'anb09ui' #创建了s这个字符串
  2. re.findall('^anb',s) #匹配s是否以anb开头的
  3. ['anb']
  4. re.findall('anb$',s) #匹配s是否以anb结尾的
  5. []
  6. re.findall('ui$',s) #匹配s是否以ui结尾的
  7. ['ui']
  8. re.findall('^ui',s) #匹配s是否以ui开头的
  9. []

10,

字符组:把任意数量的字符用小括号 () 括起来,就是字符组,目的是为匹配成功的字符串进行分组。

findall 方法会匹配第一个参数的正则表达式并过滤掉字符组外面的字符,保留小括号内的部分。

  1. s = '你好 Python\n' #创建了s这个字符串
  2. re.findall('\s*(\w+)\s*',s) #因为\w无法匹配空格,所以结果是两个字符串
  3. ['你好', 'Python']
  4. re.findall('\s*(.+)\s*',s)
  5. ['你好 Python']

 11,

findall 方法还有第三个参数,模式参数。

两个较为常用的:re.I 忽略大小写,re.S 匹配空白字符。

多个模式参数用 | 隔开。

  1. s = 'hello\nWorld'
  2. re.findall('Lo',s) #s中没有Lo
  3. []
  4. re.findall('Lo',s,re.I) #re.I表示忽略大小写,所以匹配到lo
  5. ['lo']
  6. re.findall('Lo.',s,re.I) #lo后面是换行符,而.不能匹配换行符
  7. []
  8. re.findall('Lo.',s,re.I | re.S) #re.S匹配任意空白字符,包括换行符
  9. ['lo\n']
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/113714
推荐阅读
相关标签
  

闽ICP备14008679号