前端灼点之正则表达式

来源:互联网 发布:雅马哈电钢琴软件 编辑:程序博客网 时间:2024/04/28 10:21

不止一次看正则表达式了,每次看完,当时感觉良好,过一段时间再回想起来时,脑子里就是一团浆糊。来吧,今天来梳理一下,希望能记得牢点。

定义

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

闲话不多说,直接从各种乱七八糟的符号开始梳理起。便于记忆,我将主要的正则表达式符号分了转义、定位、次数、字符簇、大小写相反、其他几个类。

转义符

‘\’ : 这个和各种语言中一样,正则表达式中很多字符有特殊意义,要表示原字符就需要使用转义符,比如 ‘\’ 表示转义符而 ‘\\’表示反斜杠。

定位符

‘^’ : 表示匹配字符串的开始位置 如: ‘^a’ 匹配 ‘abbbb’ 结果为 a
$’ : 表示匹配字符串的结束位置 如: ‘a$’ 匹配 ‘bbbba’ 结果为 a
使用 ‘^ab$’ 匹配 ‘ab’

次数

‘*’ : 匹配前面的子表达式0或多次 ,如 ‘zo*’可以匹配 ‘z’、 ‘zo’、 ‘zoo’等
‘+’: 匹配前面的子表达式1或多次,如 ‘zo+’可以匹配 ‘zo’、 ‘zoo’等
‘?’: 匹配前面的子表达式0或1次,如 ‘zo?’可以匹配 ‘z’、 ‘zo’
{n}: 匹配前面的子表达式n次
{n,}: 匹配前面的子表达式至少n次
{n,m}: 匹配前面的子表达式至少n次,至多m次
若在这些匹配符后加上 ‘?’则使用非贪婪模式,尽可能少的匹配所搜索的字符串。如用 ‘o+’搜索 ‘ooooo’得到的结果为 ‘ooooo’,而 ‘o+?’得到的结果为 ‘o’, ‘o’, ‘o’, ‘o’, ‘o’

字符簇

字符簇用两个大括号表示 ‘[]’,注意一个字符簇只能表示一个字符,如果要表示多个,可以借用前面的次数符号。如’[abc]’ 表示a或者b或者c而不是abc
连字符可以表示范围,如 ‘[0-9]’表示所有的数字, ‘[a-z]’ 表示所有的小写字母等等。
另外在字符簇内使用 ‘^’表示 ‘非’的意思,如 ‘[^0-9]’表示所有的非数字

大小写意义相反的符号

‘\b’ : 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配”never” 中的 ‘er’,但不能 匹配 “verb” 中的 ‘er’。
‘\B’ :匹配非单词边界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。
‘\d’ :匹配一个数字字符。等价于 [0-9]。
‘\D’: 匹配一个非数字字符。等价于 [^0-9]。
‘\s’ :匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
‘\S’ :匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
‘\w’ : 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。
‘\W’: 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。

其他

正则还有很多的其他的内容,但其实主要的就是上面这些。其他的如,
‘. ’ : 匹配除 “\n” 之外的任何单个字符 。
‘x|y’ : 匹配 x 或 y。例如,’z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。
另外还有一些其他的符号,由于比较杂乱,这里就不归纳了,看下次能不能想个办法。实在不行就只能硬着头皮记了。

参考资料

学习正则表达式必备资料:
正则表达式系统教程.chm

封面:

      正则表达式(regular expression)      关键字:正则表达式,Regular Expression      原著:笑容       创作于:20040503日    最后更新:2004050421:12    引用地址:正则表达式(regular expression)    版权声明:使用创作公用版权协议     CHM制作:姜运涛@阿涛淘网
0 0
原创粉丝点击