正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4113字,纯文字阅读大概需要6分钟。
内容图文
![正则表达式](/upload/InfoBanner/zyjiaocheng/1088/76f5ab4e58bf4e3fb9e4668896949549.jpg)
正则表达式
按照一定的规则,从某个字符串中匹配出想要的数据,这个规则就是正则表达式
正则表达式常用匹配规则
单个字符匹配
-
匹配某个字符
he
import re text = "abc aAbc aaaABC" reg = r"abc" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
匹配任意一个字符
.
不能匹配换行符\n
import re text = "abc aAbc aaaABC" reg = r"." ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
匹配0-9 任意数字
\d
import re text = "1112abc aAbc aaaABC" reg = r"\d" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
匹配任意非数字
\D
import re text = "abc aAbc aaaABC" reg = r"\D" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
匹配空白字符
\r \n \t 空格
\s
import re text = "\tabc aAbc aaaABC" reg = r"\s" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
\w
匹配的是a-z 和 A-Z 以及数字和下划线import re text = "_abc aAbc aaaABC" reg = r"\w" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
\W
匹配的是与\w
正好相反的import re text = "+abc aAbc aaaABC" reg = r"\W" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
\S
匹配非空字符import re text = "\tabc aAbc aaaABC" reg = r"\S" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
[] 组合的方式
- 只要满足中括号里面的字符就可以匹配
- 多个字符匹配的规则是在正则表达式后面加
+
- 排除规则
^
import re
text = "abc aAbc aaaABC"
reg = r"[\W\w]"
ret = re.match(reg, text)
if ret:
print("匹配到了:", ret.group())
else:
print("没有匹配到")
text = "028-88888888"
reg = r"[\d-]+"
ret = re.match(reg, text)
if ret:
print("匹配到了:", ret.group())
else:
print("没有匹配到")
text = "028-88888888"
reg = r"[a-zA-Z0-9_]"
reg = r"[^a-zA-Z0-9_]"
ret = re.match(reg, text)
if ret:
print("匹配到了:", ret.group())
else:
print("没有匹配到")
匹配多个字符
-
*
:匹配0个或者任意多个字符import re text = "028-88888888" reg = r"\d*-\d*" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
+
: 匹配1个或者多个字符串(最少必须一个满足条件,否则匹配不成功)import re text = "028-88888888" reg = r"\w+-\d+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
?
:匹配1个或者0个(要么没有要么只有1个)import re text = "-88888888" reg = r"\d?" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
{m}: 匹配m个字符
import re text = "88888888" reg = r"\d{5}" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
{m,n}:匹配m-n个字符
import re text = "88888888" reg = r"\d{1,15}" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
案例
-
验证手机号码
import re text = "18209985826" reg = r"1[34578]\d{9}" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
验证邮箱
import re text = "3456546747@qq.com" reg = r"\w+@[a-z0-9]+.[a-z]+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
验证url
import re text = "https://search.bilibili.com/all" reg = r"(http|https|ftp)://\S+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
^
-
以...开始
import re text = "ahttps://search.bilibili.com/all" reg = r"^(http|https|ftp)://\S+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
-
在中括号[]中
^
取反操作import re text = "hello" reg = r"[^\d]+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
$
-
以... 结尾
import re text = "hello@163.com" reg = r"\w+@163.com$" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
|
-
多个选项之间匹配
import re text = "http://127.0.0.1" reg = r"(http|https|ftp)://\S+" ret = re.match(reg, text) if ret: print("匹配到了:", ret.group()) else: print("没有匹配到")
贪婪模式
会尽量多的去匹配 默认是贪婪模式
非贪婪模式
会尽量少的去匹配 在正则表达式后面加上?
转义字符串
import re
text = "$69658.369"
reg = r"\$\d+\.\d+"
ret = re.match(reg, text)
if ret:
print("匹配到了:", ret.group())
else:
print("没有匹配到")
原生字符串
- 原生字符串是在python语言层面取消转义
import re
text = "\\n"
print(text)
reg = "\\\\n"
reg = r"\\n"
ret = re.match(reg, text)
if ret:
print("匹配到了:", ret.group())
else:
print("没有匹配到")
Python中re模块的使用
-
match # 从头开始匹配 没有匹配成功返回None 匹配成功返回Match对象
-
search # 只要找到就返回,并且只返回一个
-
sub # 替换
-
split # 分隔
-
findall # 找出所有满足条件的 以列表的方式返回
-
compile # 编译
原文:https://www.cnblogs.com/huameixiao/p/14687722.html
内容总结
以上是互联网集市为您收集整理的正则表达式全部内容,希望文章能够帮你解决正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。