博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式
阅读量:6946 次
发布时间:2019-06-27

本文共 1973 字,大约阅读时间需要 6 分钟。

正则表达式是处理字符串的强大的工具,拥有独立的语法和独特的处理引擎

我们在大文本中匹配字符串时,使用str自带的函数(find)就可以完成,对于一些复杂的情况,像找出一些像邮箱、电话等任务时,我们就要自己定义一些规则来进行匹配,那么就需要使用正则表达式

语法

语法 说明 表达式 完整匹配的字符串
一般字符 匹配自身 abc abc
. 匹配任意除换行符”\n”
[...] 字符集,对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。第一个字符如果是^则表示却反,如[^abc]表示不是abc的其他字符。所有的特殊字符在字符集中失去原有的特殊含义。在字符集中如果要使用]、-或^,可以在前面加上反斜杠 a[bcd]e abe
ace
ade
\d 数字:[0-9] a\dc a1c
\D 非数字:[^\d] a\Dc abc
\s 空白字符:[<空格>\t\r\n\f\v] a\sc a c
\S 非空白字符:[^\s] a\Sc abc
\w 单词字符:[A-Za-z0-9] a\wc abc
\W 非单词字符:[^\w] a\Wc a c
* 匹配前一个字符0或无限次 abc ab abccc
+ 匹配前一个字符1次或无限次 abc+ abc abccc
? 匹配前一个字符0次或1次 abc? ab abc
{m} 匹配前一个字符m次 ab{2}c abbc
{m,n} 匹配前一个字符m至n次。m和n可以省略:若省略m,则匹配0至n次;若省略n,ze匹配m致无限次 ab{1,2}c abc abbc
^ 匹配字符串开头
在多行模式中匹配每一行的开头
^abc abc
$ 匹配字符串末尾
在多行模式中匹配每一行的末尾
abc$ abc
\A 仅匹配字符串开头 \Aabc abc
\Z 仅匹配字符串结尾 abc\Z abc
\b 匹配\w和\W之间 a\b!bc A!bc
\B [^\b] a\Bbc abc
| |代表左右表达式任意匹配一个。它总是先尝试匹配左边的表达式,一旦成功则跳过匹配右边的表达式 如果 没有被包含在()中,则它的范围是整个正则表达式 abc
(...) 被括起来的表达式作为分组,从表达式左边开始每遇到一个分组的左括号’(’,编号+1.另外,分组表达式作为一个整体,可以后接数量词。表达式中的 仅在该组中有效 (abc){2}
a(123
(?P...) 分组,除了原有的编号外再指定一个额外的别名 (?Pabc){2} abcabc
<number> 引用编号为的分组分配到的字符串 (\d)abc\1 1abc1
5abc5
(?P=name) 引用别名为的分组分配到的字符串 (?P\d)abc(?P=id) 1abc1
5abc5
(?...) (…)的不分组版本,用于使用或后接数量词 (?:abc){2} abcabc
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头,可接多个 (?i)abc Abc
(?#...) #后的内容作为注释被忽略 abc(?#comment)123 abc123
(?!...) 之后的字符串内容不需要匹配表达式才能成功匹配 a(?!\d) 后面不是数字的a
(?=...) 之后的字符串内容需要匹配表达式才能成功匹配 a(?=\d) 后面是数字的a
(?<=...) 之前的字符串内容需要匹配表达式才能成功匹配 (?<=\d)a 前面是数字的a
(?<!...) 之前的字符串内容不需要匹配表达式才能成功匹配 (?<!\d)a 前面不是数字的a
(?(id/name)yes-pattern|no-pattern) 如果编号为id别名为name的组匹配到字符,则需要匹配yes-pattern,否则需要匹配no-pattern (\d)abc(?(1)\d|abc) 1abc2
abcabc

Python用法案例

re模块

Python通过re模块提供对正则表达式的支持

使用re的步骤

  • 将正则表达式的字符串形式编译为Pattern实例
  • 使用Pattern实例处理文本并获取得匹配结果(一个Match实例)
  • 使用Match实例获取信息,进行其他操作
import re# 将正则表达式的字符串形式编译成Pattern实例pattern = re.compile(r'hello.*\!')# 使用Pattern匹配文本,获取匹配结果,无法匹配返回nonematch = pattern.match('hello,xiaowuwan!how are you?')if match:	# 使用Match获得分组信息	print(match.group())复制代码

转载地址:http://dmonl.baihongyu.com/

你可能感兴趣的文章
Mac 下安装使用 Love2D
查看>>
史上最全的机器学习资料(下)
查看>>
#SORA#celery原生配置文件研究
查看>>
python 详解re模块
查看>>
程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
查看>>
oninput & onpropertychange 实现监听input的键盘事件
查看>>
famous
查看>>
PHP加密扩展 (php-beast) 1.5版本 常见问题解答
查看>>
C++ primer(笔记更新中)
查看>>
CNPM搭建私有的NPM服务
查看>>
centos6网卡自动启动设置
查看>>
Python各种流程语句
查看>>
any-enter是亮点
查看>>
Web压力测试记录
查看>>
Vmware Player端口映射(NAT)
查看>>
seci-log 1.12 发布 增加了http 旁路抓包审计
查看>>
MongoDB入门学习记录一:基本使用
查看>>
ios 面试总结
查看>>
对于舞蹈的认识与评价
查看>>
Neo4j的Rest接口使用
查看>>