正则表达式整理
Posted warcraft
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式整理相关的知识,希望对你有一定的参考价值。
本文和python关系不大,前面几节是为了使用python中的正则,后面只关注正则本身。
0. Python re 方法
re.match #从头开始匹配,返回None/Match对象
re.search #搜索整个字符串,返回None/Match对象
re.findall #搜索整个字符串,返回List
re.finditer #返回迭代器
1. 匹配纯文本
普通字符串匹配
import re
# 匹配纯文本
s1 = ‘hello, my name is Ben. Please visit my website at http://www.xxx.com/.‘
## 单个
single = re.search(r‘Ben‘, s1)
if single:
print(single.group())
## 多个
multiple = re.findall(r‘Ben|my‘, s1)
print(multiple)
结果
Ben
[‘my‘, ‘Ben‘, ‘my‘]
2. 匹配任意字符 .
.
字符可以匹配任何一个单个的字符(除换行符),
转义元字符(特殊含义的字符)。
import re
# 匹配任意&特殊字符
s1 = ‘‘‘
$ git status # 查看状态
$ git diff # 查看变更内容
$ git add . # 跟踪所有改动过的文件
$ git add <file> # 跟踪指定的文件
$ git mv <old> <new> # 文件改名
$ git rm <file> # 删除文件
$ git rm --cached <file> # 停止跟踪文件但不删除
$ git commit -m "commit message" # 提交所有更新过的文件
$ git commit --amend # 修改最后一次提交
‘‘‘
result = re.findall(r‘add..‘, s1)
print(result)
结果
[‘add .‘]
3. 匹配一组字符[]
使用元字符[]
来定义一个字符集合。字符集合的匹配结果是能够与该集合里的任意一个成员相匹配的文本。
[Aa]
匹配A
a
字符中的某一个。[0123456789]
匹配个位数字,等价于[0-9]
,类似这种通过特殊元字符-
连接ASCII码的字符集合区间范围可以方便表达字符范围,举例[A-Z]
、多个字符区间[A-Z0-9a-z]
。注:-
作为元字符只能用在[]
之间,其他地方表示普通字符。
元字符^
可以排除字符集合区间的字符,举例:[^0-9]
不取数字。
import re
# 匹配一组字符
s1 = ‘‘‘
$ git status # 查看状态
$ git diff # 查看变更内容
$ git add . # 跟踪所有改动过的文件
$ git add <file> # 跟踪指定的文件
$ git mv <old> <new> # 文件改名
$ git rm <file> # 删除文件
$ git rm --cached <file> # 停止跟踪文件但不删除
$ git commit -m "commit message" # 提交所有更新过的文件
$ git commit --amend # 修改最后一次提交
‘‘‘
# 取带有rm或者om的git操作
result = re.findall(r‘g.*[ro]m[^#]*‘, s1)
for x in result:
print(x)
结果
git rm <file>
git rm --cached <file>
git commit -m "commit message"
git commit --amend
图形化
4. 使用元字符
元字符是一些在正则表达式中有特殊含义的字符。
字符类别 | 说明 | 示例 |
---|---|---|
特殊字符转义 | . [ ( 之类正则的元字符表示自身时需要进行转义 |
. 表示. 字符 |
空白字符 | 匹配非打印空白字符 f
v |
匹配换行符 |
数字(类) | d 匹配数字字符(等价于[0-9] ),D 匹配非数字字符([^0-9] ) |
1[34578]d{9} 匹配手机号码 |
字母和数字(类) | w 匹配数字字符下划线(等价于[a-zA-Z0-9_] ),W 匹配非w |
w+ 匹配[ onion ] 的结果:onion |
空白字符(类) | s 匹配任何一个空白字符(等价于[f
v] ,不包含退格d ),S 匹配非空白字符 |
S+ 匹配[ onion ] 的结果:[ 、onion 和] |
十六禁止 | 匹配十六进制(x 开头)或八进制(
|