正则表达式学习

前言

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

参考文章:

python的re模块及正则的讲解

正则教程

正则表达式手册

在线测试网站

Regexr

站长之家

规则

纯字符数字

直接输入字符数字进行匹配

pattern 正则表达式规则
/你好/
str 要进行匹配的字符串
你好,老师
input 匹配结果
你好

元字符

元字符 匹配项
. 除换行符 之外的所有字符
w 字母数字下划线
d 数字
s 空格
 单词的开头或结位,不占位置
^ 全文开头,不占位置
$ 全文结尾,不占位置
[abc] 括号内的字符
a|b a或b

反义元字符

反义元字符 匹配项
W 所有非字母数字下划线
D 非数字
S 非空白行
B 非单词开头或结尾
[^abc] 非括号内的字符

量词

量词 匹配项
*(贪婪) 重复0或多次
+(占有) 重复1或多次
?(懒惰) 重复0或1次
{n} 重复n次
{n,m} 重复n至m次
{n,} 重复n至多次

捕获组

一个括号内的内容,可以对捕获组进行分组,并在后面可以进行引用

捕获组 匹配项
(exp) exp,并且捕获文本到自动命名的组里
(?<name>exp) exp,并且捕获文本到命名的组里
(?:exp) exp,不对捕获文本分配组号
(?=exp) exp前项
(?<=exp) exp后项
(?!exp) 非exp
(?<!exp) 非exp的后项

实例分析

  1. 匹配含有q但是q后面不是u的单词

    一般做法:wq[^u]w

    但有个漏洞,比如Iraq,Benq,会被视为一个单词

    改进做法:wq(?!u)w

    使用负向宽零断言,参考链接:宽零断言-百度百科

修饰符

正则表达式格式为/pattern/,修饰符是对这个正则表达式的补充说明,写在后一个/的后面

i 不区分大小写

/abc/i 可以匹配 abc aBc ABc

g 全局匹配

不带g,找到一个符合的就停止查找下一个

带g,找完所有符合的才停止

m 多行匹配

匹配字符串中含有 ,需要多行匹配

s .包含换行符

加了s使 "." 可以表示所有字符(包括换行符 )

U 不重复匹配

只匹配最近的一个字符串

x 忽略模式中的空白

将模式pattern(正则规则)中的空白忽略

原文地址:https://www.cnblogs.com/labster/p/13258287.html