正则总结

来源:互联网 发布:仙剑4 知乎 编辑:程序博客网 时间:2024/06/05 14:51

 

一。一些正则例子

正则

结果

说明

b

abc

b

 

ab+

abbc

abb

 

1//2

ab1/2c

1/2

 

1/t2

ab1  2c

12

 

1/$2

ab1$2c

1$2

 

a/d/d/db

a123b

a123b

 

a/d/w/w/wb

a1b3_b

a1b3_b

 

1/s2

a1 2b

1 2

空格

1/s2

a1    2b

12

制表符(Tab

1/s2

ab1

2c

12

换页符

1/s+2

ab1

 

2c

12

多个换页符

1.2

ab142c

142

小数点可以匹配除了换行符(/n)以外的任意一个字符

[ab12@]

ab142c

a b12

匹配 "a" "b" "5" "@"

[^ab12]

ab142c

4c

匹配 "a","b","c" 之外的任意一个字符

[a-d]

afgd

a d

匹配 "a"~"d" 之间的任意一个字母

[^a-d0-3]

afgd1425

f45

匹配 "A"~"F","0"~"3" 之外的任意一个字符

a/w{2}

abcd

abc

{n}表达式重复n

a/w{2,4}

abcdefg

abcde

{m,n}表达式至少重复m次,最多重复n

a/w{2,}

abcdefg

abcdefg

{m,} 表达式至少重复m

a/w?

abcdefg

ab

? 匹配表达式0次或者1次,相当于 {0,1}

a/w+

abcdefg

abcdefg

+表达式至少出现1次,相当于 {1,}

a/w*

abcdefg

abcdefg

*表达式不出现或出现任意次,相当于 {0,}

^a/w*

abcdefg

abcdefg

与字符串开始的地方匹配

^b/w*

abcdefg

匹配失败

 

/w*g$

abcdefg

abcdefg

与字符串结束的地方匹配

/w*f$

abcdefg

匹配失败

 

/bend/b

weekend,endfor,end

end

匹配一个单词边界,也就是单词和空格之间的位置

/bend/b

weekend endfor end

end

 

Tom|Jack

I'm Tom, he is Jack

Tom Jack

左右两边表达式之间 "" 关系,匹配左边或者右边

a(b/w+f)

abcdefg

bcdef

( )

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2).
取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

 

 

 

 

a/w+a

abbbabbba

abbbabbba

贪婪模式

a/w+?a

abbbabbba

abbba

非贪婪模式

<td>(.*)</td>

<td><p>aa</p></td><td><p>bb</p></td>

<td><p>aa</p></td><td><p>bb</p></td>

贪婪模式

<td>(.*?)</td>

<td><p>aa</p></td><td><p>bb</p></td>

<td><p>aa</p></td>

非贪婪模式

 

 

 

 

(/w)/1{4,}

aa bbbb ccc abc ddddd

ddddd

反向引用 /1, /2...

<(/w+)/s*(/w+(=('|").*?/4)?/s*)*>.*?<//1>

<td id='t1'  style='bgcolor:white'>aa</td>

<td id='t1'  style='bgcolor:white'>aa</td>

反向引用 /1, /2...

 

 

 

 

windows (?=xp|2000)

windows xp,windows 2003,windows 2000,windows 98,windows me

windows xpwindows 2000中的windows

正向预搜索:"(?=xxxxx)""(?!xxxxx)"

(/w)((?=/1/1/1)(/1))+

aaa ffffff 999999999

ffff 9999999

重复4次以上的字母数字,则匹配其剩下最后2位之前的部分

windows (?=xp|2000)

windows xp,windows 2003,windows 2000,windows 98,windows me

,windows 2003 windows 98

windows me中的windows

   格式:"(?!xxxxx)",所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式。

do(?=/w)

done, do, dog

done dog中的do

 

do(?!/w)

done, do, dog

do

 

 

 

 

 

a/x20bc

a bc

a bc

/xXX 编号在 0 ~ 255 范围的字符,比如:空格可以使用 "/x20" 表示

a/sbc

a bc

a bc

"/s""/d""/w""/b"对应的大写字母表示相反的意义

a/Sbc

a2bc

a2bc

 

a/dbc

a2bc

a2bc

 

a/Dbc

a bc

a bc

 

a/wbc

a_bc

a_bc

 

a/Wbc

a&bc

a&bc

 

  

二。正则知识点

 

表达式

可匹配

/r, /n

代表回车和换行符

/t

制表符

//

代表 "/" 本身

表达式

可匹配

/^

匹配 ^ 符号本身

/$

匹配 $ 符号本身

/.

匹配小数点(.)本身

表达式

可匹配

/d

任意一个数字,0~9 中的任意一个

/w

任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个

/s

包括空格、制表符、换页符等空白字符的其中任意一个

.

小数点可以匹配除了换行符(/n)以外的任意一个字符

表达式

可匹配

[ab5@]

匹配 "a" "b" "5" "@"

[^abc]

匹配 "a","b","c" 之外的任意一个字符

[f-k]

匹配 "f"~"k" 之间的任意一个字母

[^A-F0-3]

匹配 "A"~"F","0"~"3" 之外的任意一个字符

表达式

作用

{n}

表达式重复n次,比如:"/w{2}" 相当于 "/w/w""a{5}" 相当于 "aaaaa"

{m,n}

表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba""baa""baaa"

{m,}

表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...

?

匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

+

表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...

*

表达式不出现或出现任意次,相当于 {0,},比如:"/^*b"可以匹配 "b","^^^b"...

表达式

作用

^

与字符串开始的地方匹配,不匹配任何字符

$

与字符串结束的地方匹配,不匹配任何字符

/b

匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

表达式

作用

|

左右两边表达式之间 "" 关系,匹配左边或者右边

( )

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2).
取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

表达式

匹配结果

(d)(/w+)

"/w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"

(d)(/w+)(d)

"/w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "/w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"/w+" 可以 "让出" 它本来能够匹配的最后一个 "d"

表达式

匹配结果

(d)(/w+?)

"/w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"/w+?" 只匹配了一个 "x"

(d)(/w+?)(d)

为了让整个表达式匹配成功,"/w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"/w+?" 匹配 "xxx"

形式

字符范围

/xXX

编号在 0 ~ 255 范围的字符,比如:空格可以使用 "/x20" 表示

/uXXXX

任何字符可以使用 "/u" 再加上其编号的4位十六进制数表示,比如:"/u4E2D"

表达式

可匹配

/S

匹配所有非空白字符("/s" 可匹配各个空白字符)

/D

匹配所有的非数字字符

/W

匹配所有的字母、数字、下划线以外的字符

/B

匹配非单词边界,即左右两边都是 "/w" 范围或者左右两边都不是 "/w" 范围时的字符缝隙

字符

说明

^

匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "/^"

$

匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "/$"

( )

标记个子表达式的开始和结束位置。要匹配小括号,请使用 "/(" "/)"

[ ]

用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "/[" "/]"

{ }

修饰匹配次数的符号。要匹配大括号,请使用 "/{" "/}"

.

匹配除了换行符(/n)以外的任意一个字符。要匹配小数点本身,请使用 "/."

?

修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "/?"

+

修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "/+"

*

修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "/*"

|

左右两边表达式之间 "" 关系。匹配 "|" 本身,请使用 "/|"

表达式属性

说明

Ignorecase

默认情况下,表达式中的字母是要区分大小写的。配置为 Ignorecase 可使匹配时不区分大小写。有的表达式引擎,把 "大小写" 概念延伸至 UNICODE 范围的大小写。

Singleline

默认情况下,小数点 "." 匹配除了换行符(/n)以外的字符。配置为 Singleline 可使小数点可匹配包括换行符在内的所有字符。

Multiline

默认情况下,表达式 "^" "$" 只匹配字符串的开始 和结尾 位置。如:

xxxxxxxxx/n
xxxxxxxxx

配置为 Multiline 可以使 "^" 匹配 外,还可以匹配换行符之后,下一行开始前 的位置,使 "$" 匹配 外,还可以匹配换行符之前,一行结束 的位置。

Global

主要在将表达式用来替换时起作用,配置为 Global 表示替换所有的匹配。

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 遇上自私的父母怎么办 小孩一年级数学不好怎么办 数学考试考不好怎么办 孩子奥数学不好怎么办 孩子下笔太重怎么办 小孩子写字太重怎么办 经常对小孩发火怎么办 对小孩发火后悔怎么办 小孩子不喜欢学数学怎么办? 孩子心里素质差怎么办 三年级语文太差怎么办 宝宝一年级很笨怎么办 一年级孩子太笨怎么办 孩子学习脑子笨怎么办 四年级孩子数学差怎么办 中考考不好了怎么办 初中没学高中怎么办 数学基础差该怎么办 三年级数学成绩差怎么办 夫妻差6岁怎么办 初一数学很差劲怎么办 三年级孩子成绩差怎么办 初中数学成绩不好怎么办 大人不会算数学怎么办 小学初数学不好怎么办 初中生数学计算能力差怎么办 初中生数学计算差怎么办 初一数学没救了怎么办 五年级英语不好怎么办 三年级孩子学习差怎么办 孩子三年级学习成绩差怎么办 三年级字写不好怎么办 7小孩表达能力差怎么办 孩子考了低分怎么办 初一考300分怎么办 小学三年级成绩不好怎么办 五年级考几分怎么办 思想晚熟的人怎么办 孩子学不好数学怎么办 做作业速度慢怎么办 孩子碎头发太多怎么办