?
?
一.正则
正则就是用来筛选字符串中的特定的内容
正则表达式与re模块的关系:
1.正则表达式是一门独立的技术,任何语言都可以使用
2.python中药想使用正则表达式需要通过调用re模块
正则应用场景:
1.爬虫
2.数据分析
正则字符:
元字符 |
匹配内容 |
. |
除 换行符 以外的任意字符 |
n |
换行符 |
w |
字母 或 数字 或 下划线 |
s |
任意的空白字符 |
d |
数字 |
W |
非 字母 或 数字 或下划线 |
S |
非 空白字符 |
D |
非 数字 |
t |
制表符 |
^ |
字符串的开始 |
$ |
字符串的结尾 |
b |
单词的结尾 |
a|b |
字符 a 或 b |
() |
匹配括号内的表达式,也表示一个组 |
[...] |
匹配字符组中的字符 |
[^...] |
匹配出了字符中的所有字符 |
?
?
?
?
?
?
?
?
量词 |
说明 |
* |
重复 零次 或 多次 |
+ |
重复 一次 或 多次 |
? |
重复 零次 或 一次 |
{n} |
重复 n 次? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? |
{n,} |
重复 n 次 或 多次 |
{n,m} |
重复 n 到 m 次 |
字符组概念
在同一位置可能出现各种字符 组成了一个字符组,在正则表达式中用[ ]表示,一个字符组内每次只能匹配一个字符,[ ]内的字符是或的关系
例:
- 匹配0-9数字 : [0123456789] 或 [1-9]?
- 匹配A-Z字母 : 同上
- 匹配a-z字母 : 同上
ps: 字符组内范围必须从小到大必须按ASCII码表排序
-
^:以什么开头
- ^[1-9] : 匹配字符是否以1-9其中的数字为开头
- $:以什么结尾
- [a-z]$ : 匹配的字符是否以a-z其中的字母结尾
-
^...$:精准匹配固定长度的目标字符
- ^waller$ : 匹配waller
-

?
-
?| :或
- ab|abc 优先匹配 | 前面的内容,若前面内容匹配上 | 后面的内容不再匹配(在书写时把长的写在 | 前面)


- ?[^...] : 除括号内的内容其他都匹配
-
 ?
?
量词 只能和元字符配合使用,并且是贪婪匹配

?
-
+ :? 匹配1次或多次
- 匹配 13555555555,用 d 每次只能匹配单个数字,要想把数字一次都匹配上要用 d+?
-
 匹配到 1 条结果
- ?* : 匹配零次或多次
-
 匹配到 2 条结果 ?
- ?{n} : 指明重复个数

?题:
- 轨道 通道 地道 魔道 人道?
- 逐个匹配出后面的道:
-

?
- 取出词:
- [^s]{2} : 去掉空格,每次取两个字符? ?
- .道 : 取出 .和道组成的词
- [^s]. :? [^s]本身占了一个位置 加 . 共取两个位置
-


 ?
?
- ?匹配人名: 海燕海娇海东
-
海. |
取 海和.组成的词 |
海燕海娇海东 |
? 匹配所有"海."的字符 |
^海. |
只取以 海和.为开头 |
海燕 |
只从开头匹配"海." |
? 海.$ |
?只取以 海和.为结尾 |
海东 |
只匹配结尾的"海.$" |
?
?
正则 |
待匹配字符 |
匹配 结果 |
说明 |
李.? |
李杰和李莲英和李二棍子 |
李杰 李莲 李二 |
? ?表示重复零次或一次,即只匹配"李"后面一个任意字符 ? |
李.* |
李杰和李莲英和李二棍子 |
李杰和李莲英和李二棍子 |
*表示重复零次或多次,即匹配"李"后面0或多个任意字符 |
李.+ |
李杰和李莲英和李二棍子 |
李杰和李莲英和李二棍子 |
+表示重复一次或多次,即只匹配"李"后面1个或多个任意字符 |
李.{1,2} |
李杰和李莲英和李二棍子 |
李杰和 李莲英 李二棍 |
{1,2}匹配1到2次任意字符 |
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|