正则表达式1.正则表达式:记录⽂本的规则的代码
\b:元字符,单词分界处,匹配⼀个位置
.:元字符,匹配出了除了换⾏符以外的任意字符正则匹配包含不连续的指定字符
*:元字符,指定*前边的内容可以连续重复以使整个表达式得到匹配
\d:元字符,匹配⼀位数字
\s:匹配任意的空⽩字符,如空格,制表符,换⾏符,中⽂全⾓空格
\w:匹配字母,数字,下划线,汉字
\d+:匹配⼀个或多个连续的数字,匹配重复⼀次或多次
^:匹配字符串的开始
&:匹配字符串的结束
:重复0次或者⼀次
{n}:重复n次
{n,}:重复n或者更多次
{n,m}:重复n到m次
2.字符类
[a,e,i,o,u] [.?!] [0-9]
3.分⽀条件
“|”:从左到右,顺序
4.分组
⽤⼩括号来指定表达式(分组),再⽤⼤括号指定重复次数
5.反义
\W:匹配任意不是字母,数字,下划线,汉字的字符
\S:匹配任意不是空⽩符的字符
\D:匹配任意⾮数字的字符
\B:匹配不是单词开头或者结束的位置
[^x]:匹配除了x以外的任意字符
6.使⽤⼩括号的特定⽤途
捕获:(exp)匹配exp,并捕获⽂本到⾃动命名的组⾥
(?<name>exp) 匹配exp,并捕获⽂本到名称为name的组⾥,同(?'name'exp) (?:exp) 匹配exp,不捕获匹配的⽂本,也不给此分组分配组号
零宽断⾔:(?=exp) 匹配exp前⾯的位置
(?<=exp) 匹配exp后⾯的位置
(?!exp) 匹配后⾯跟的不是exp的位置
(?<!exp) 匹配前⾯不是exp的位置
注释:(?#comment)
7.贪婪与懒惰
⼀般情况匹配尽可能多的字符:a. *b 贪婪
懒惰:a.*?b
*?:重复任意次,单尽可能少重复
:重复0次或者1次,但尽可能少重复
{n,m}?:重复n~m次,但尽可能少重复
8.处理选项
IgnoreCase:忽略⼤⼩写
Multiline:多⾏模式
Singleline:单⾏模式
IgnorePatternWhiteSpace:忽略空⽩
Explicitcapture:显⽰捕获
平衡组,递归匹配:
(?'group'):把捕获的内容命名为group,并压⼊堆栈stack
(?'-group'):从堆栈中弹出最后压⼊堆栈的名为group的捕获内容,若堆栈本来为空,则本分组的匹配失败(?(group)yes|no):若堆栈上存在以名为group的捕获内容的话,继续匹配yes部分表达式,否则匹配no部分(?!):零宽负相先⾏断⾔,⽆后缀表达式,故匹配总是失败
\cN:ASII控制字符,⽐如\cC代表ctrl+C
\A:字符串开头,类似^,但不受多⾏选项的影响
\Z:字符串结尾或⾏尾,不受多⾏选项影响
\G:当前搜索的开头
\P{name}:Unicode中命名为name的字符类
(?>exp):贪婪表达式
(?<x>-<y>exp):平衡组
(?im-nsx:exp):在字表达式exp中改变处理选项
(?im-nsx)为表达式后⾯的部分改变处理选项
(?(exp)ye|no):零宽正向先⾏断⾔,能匹配yes,不能,no表达式
(?(name)yes|no):命名为name的组捕获到了内容,则为yes,否则no
邮件:\w+([-+.']\w+)*@\w+([-.]\w)*\.\w+([-.]\w+)*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论