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 retest_data = Neo@protonmail.com
print(re.findall(\w*, test_data)) # 匹配 0 次 或者 多次 数字或字母,[含空格]((解决上一章节的思考问题
# >>> 执行结果如下:
# >>> [Neo, , protonmail, , com, ]
PS:匹配 0 次 或者 多次 数字或字母,[含空格]((解决上一章节的思考问题)
示例 - 5
代码示例如下:
import retest_data = Neo@protonmail.com
print(re.findall(\w+, test_data)) # 匹配 1 次 或者 多次 数字或字母,[不含空格]
# >>> 执行结果如下:
# >>> [Neo, protonmail, com]
w+
: 匹配1次或者多次数字或者字母@
和.
:属于 0 次 范围,不会被匹配出来
示例 - 6
代码示例如下:
import retest_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 retest_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 retest_data = Neo@protonmail.com
print(re.findall([^Neo], test_data)) # 这里的 ^ 不再代表开始的位置,而是不匹配 Neo 此字符集
# >>> 执行结果如下:
# >>> [@, p, r, t, n, m, a, i, l, ., c, m]
PS:[^...]
这里中括号内的^
不再代表开始的位置,而是过滤掉当前字符集中的字符。
组的概念
代码示例如下:
import redata = "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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。