RegularExpression
本文最后更新于 576 天前,其中的信息可能已经有所发展或是发生改变。

RE基本语法

. 表示任何一个字符

[a-z]表示任何一个小写字母  [A-Z] 表示任何一个大写字母

[^0-9] 表示除数字的字符  ^ 表示排除种类

* 前一个字符 0 至无数次拓展

+ 表示前一个字符1至无数次拓展

? 前一个字符0至1次拓展

abc|def 表示二者之间任意一个

{x}拓展前一个字符x次

{m,n}拓展前一个字符 m到n次

^ab 表示字符串开头为ab

$cd 表示以 cd 结尾

\w 表示所有单词 等价于 [A-Za-z0-9_]

\d表示所有数字[0-9]

PY{:3}ON 表示前一个自符拓展一次到三次即 PYON、PYYON、PYYYON

示例

^[A-Za-z0-9]+$ 表示由26字母和数字组成的字符串

^-?[0-9]+$ 或 ^-?\d+$ 表示整数

^[0-9]* [1-9] *[0-9]$ 表示正整数

[\u4e00- \u9fa5] 匹配中文字符

0-99 :[1-9]?\d 100-199:1[0-9]{2}

200-249: 2[0-4]\d 250-255: 25[0-5]

匹配IPV4地址:

^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$

匹配IPV4地址(CIDR):

^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}/(([1-2]\d)|(3[0-2])|(\d))$

匹配空行:

/^$/gm

 

使用re库

re.search(表达式 , 待匹配字符串, 控制标记)

​ 它会返回第一个满足表达式的字符,并且会返回 match对象,意味着需要赋值给一个变量进行操作,若字符串没有对应内容,则会返回 None ,所以需要用 if 来判断是否有匹配值

m = re.search(r'[1-9]\d{5}', 'BIT 100081') 
if m:
    print(m.group(0))

即可打印出匹配字符

re.match(表达式 , 待匹配字符串, 控制标记)

​ 它会返回字符开头的匹配且只匹配字符开头,其余和 re.search 一样,返回match对象

re.findall(表达式 , 待匹配字符串, 控制标记)

​ 它会匹配字符串中所有的内容,返回符合表达式的匹配结果

re.split(表达式 , 待匹配字符串, maxsplit=最大分割数,控制标记(flag))

​ 它会将字符串中所有匹配的内容去掉,然后将分割结果分别加入一个列表中,它的第二个参数为最大分割数

re.finditer(表达式 , 待匹配字符串, 控制标记)

​ 它的返回内容是一个列表,因此可以用for 循环来迭代单独输出字符串中匹配的内容,每个迭代的元素是match对象

re.sub(表达式 , 替换匹配字符串的字符,待匹配字符串,count=最大替换数, 控制标记)

​ 它可以将字符串匹配的内容替换成给定内容

re的 OOP用法

a = re.compile(r'[1-9]\d{5}') 
b = a.search('BIT 100081')

可多次使用 a 对象,来加速运行速度

贪婪匹配和最小匹配

​ 若待匹配的字符串中(同一个单词)有多个匹配项,re库默认返回最长的那一个,若需要最小匹配,则需要在匹配规则中加一个 ?

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇