python正则表达式或者用法,正则表达式Python

  python正则表达式或者用法,正则表达式Python

  常规规则匹配的信息作为单个字符存储在输出结果中。如何根据字符串中的短语进行匹配?所以本文就带大家学习一下正则表达式中的量词符号和组的概念,有兴趣的可以看看。

  00-1010正则表达式中的符号示例-1示例-2示例-3示例-4示例-5示例-6示例-7示例-8组概念性贪婪模式和非贪婪模式

  

目录

  符号re1 re2匹配正则表达式re1或RE2;1和re2表示两个匹配的字符串信息$匹配字符串的开头$匹配字符串的结尾*匹配前一个正则表达式0次或更多次{N}匹配前一个正则表达式1次或更多次{M,N}匹配正则表达式[…]出现M-N次才匹配字符集中的任何单个字符[…]匹配x-y范围内的任何单个字符[…]不匹配此字符集中的任何字符,包括某个字符范围(如果它出现在此字符集中)\使特殊字符无效。通过这样的描述大家可能很难理解。接下来,我们来看一些简单的例子。(以下示例按上表顺序排列)

  

正则表达式中的符号

  代码示例如下:

  进口re

  test_data=Neo@protonmail.com

  print(re . find all( Neo proton com mail ,test_data))

  #执行结果如下:

  # [Neo ,质子,邮件, com]

  Ps: 是或者,只要存在就可以捕捉;匹配顺序只按字符串顺序返回,不按匹配规则返回。

  

示例 - 1

  代码示例如下:

  进口re

  test_data=Neo@protonmail.com

  print(re.findall(^Neo,测试数据))

  #执行结果如下:

  # [Neo]

  打印(回复findall(韩梅梅,test _ data)) #没有以韩梅梅开头的数据。

  #执行结果如下:

  # []

  Ps:匹配字符串的开头;相当于我们上一章学的\ a。

  

示例 - 2

  代码示例如下:

  进口re

  test_data=Neo@protonmail.com

  print(re.findall(com$ ,test_data))

  #执行结果如下:

  # [com]

  Print (re.findall (com.cn $ ,test _ data)) #没有以com.cn结尾的数据。

  #执行结果如下:

  # []

  

  PS:$匹配字符串末尾部分; 等同于上一章节我们学习的\Z

  

  

示例 - 4

  代码示例如下:

  

import re

  test_data = Neo@protonmail.com

  print(re.findall(\w*, test_data)) # 匹配 0 次 或者 多次 数字或字母,[含空格]((解决上一章节的思考问题

  # >>> 执行结果如下:

  # >>> [Neo, , protonmail, , com, ]

  

  PS:匹配 0 次 或者 多次 数字或字母,[含空格]((解决上一章节的思考问题)

  

  

示例 - 5

  代码示例如下:

  

import re

  test_data = Neo@protonmail.com

  print(re.findall(\w+, test_data)) # 匹配 1 次 或者 多次 数字或字母,[不含空格]

  # >>> 执行结果如下:

  # >>> [Neo, protonmail, com]

  

  

  • w+: 匹配1次或者多次数字或者字母
  • @.:属于 0 次 范围,不会被匹配出来

  

  

示例 - 6

  代码示例如下:

  

import re

  test_data = Neo@protonmail.com

  print(re.findall(\w{3}, test_data)) # 匹配3次数字或者字母

  # >>> 执行结果如下:

  # >>> [Neo, pro, ton, mai, com]

  print(re.findall([a-z]{3}, test_data)) # 匹配小写的 [a-z] 3次

  # >>> 执行结果如下:

  # >>> [pro, ton, mai, com]

  

  

  • {N}:对于匹配到的数据只获取 N 个
  • [a-zA-Z0-9]:基本上等同于\w

  

  

示例 - 7

  代码示例如下:

  

import re

  test_data = Neo@protonmail.com

  print(re.findall(\w{1,5}, test_data)) # 匹配 1 次 到 5次 的数字或字母[这是一个范围]

  # >>> 执行结果如下:

  # >>> [Neo, proto, nmail, com]

  print(re.findall(\w{1, 5}, test_data))

  # >>> 执行结果如下:

  # >>> []

  

  

  • [1,5]:给出匹配到的数据的范围
  • [1, 5]:需要注意的是 N 和 M 中间的逗号不能有空格,否则会返回的是空列表。

  

  

示例 - 8

  代码示例如下:

  

import re

  test_data = Neo@protonmail.com

  print(re.findall([^Neo], test_data)) # 这里的 ^ 不再代表开始的位置,而是不匹配 Neo 此字符集

  # >>> 执行结果如下:

  # >>> [@, p, r, t, n, m, a, i, l, ., c, m]

  

  PS:[^...]这里中括号内的^不再代表开始的位置,而是过滤掉当前字符集中的字符。

  

  

组的概念

  符号描述()在匹配规则中获取指定的数据

  代码示例如下:

  

import re

  data = "My name is Neo, Im 30 years old."

  result = re.search(My name is (.*), I\m (.*) year\s old., data) # search 函数是一个获取组的概念

  print(result.groups())

  # >>> 执行结果如下:

  # >>> (Neo, 30)

  print(result.group(1)) # 获取 组 的第一个数据

  # >>> 执行结果如下:

  # >>> Neo

  print(result.group(2)) # 获取 组 的第二个数据

  # >>> 执行结果如下:

  # >>> 30

  

  利用 search 函数组的概念,获取指定字符串中指定的数据。

  

  

贪婪模式与非贪婪模式

  在上文的例子中,我们使用的 '.*' 或者 '\w+' 等的这种匹配0次或者多次就是属于 贪婪模式

  而非贪婪模式,就是可以匹配到多个信息,但是进行了限制,就是非贪婪模式。实现非贪婪模式,通过? 组合编程非贪婪模式。

  如 \d+? 或者 \w*? 等模式

  以上就是Python语法学习之正则表达式的量词汇总的详细内容,更多关于Python正则表达式量词的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: