正则表达式的使用

1.写法
/表达式/g /\d/g
2. 元字符

 .	 //匹配除换行符以外的任意字符
\w	 //匹配字母或数字或下划线或汉字
\s	 //匹配任意的空白符
\d	 //匹配数字
\b	 //匹配单词的开始或结束
 ^	 //匹配字符串的开始   
 $	 //匹配字符串的结束

3.字符转义
使用\来取消这些字符的特殊意义

4. 重复

*	    //重复零次或更多次
+   	//重复一次或更多次
?	    //重复零次或一次
{n}	    //重复n次
{n,}	//重复n次或更多次
{n,m}	//重复n到m次

5.字符组 [字符]
eg:[abcde] [0-9] [a-z] [A-Z] [?!]

6.或 |
eg:下面例子匹配 2-4 位数字或者 4-7 位数字
\d{2,4}|\d{4,7}
7.非运算 ^
下面例子除了单词hello 以外都能匹配
[^\bhello\b].*

8. 分组 ()
分组后就可以指定这个子表达式的重复次数了
eg:匹配22—444444
(\d{2,4})(-){3}(\d{6,9})

9.后向引用
用于重复搜索前面某个分组匹配的文本。
eg:下面例子可以匹配 hijffdhi
(hi).*\1
eg: hello darling hello
(\bhello\b)(.*?)\1

10.零宽断言 (?=)
满足特定条件才能匹配
eg:下面例子可以捕获单词 hello
(?=\bhello\b).{5}

11.负零宽断言 (?!)
与零宽断言相反
下面例子不匹配数字
(?!\d).

12.贪婪与懒惰
贪婪:匹配尽可能多的字符
eg: a.*b 匹配以a开头以b结尾的尽可能多的字符串
懒惰:与贪婪相反匹配尽可能少的字符串
eg:a.+? 匹配以a开头的尽可能少的字符

*?	       //重复任意次,但尽可能少重复
+?	       //重复1次或更多次,但尽可能少重复
??	       //重复0次或1次,但尽可能少重复
{n,m}?	   //重复n到m次,但尽可能少重复
{n,}?	   //重复n次以上,但尽可能少重复

13.语法总结

\a	报警字符(打印它的效果是电脑嘀一声)
\b	通常是单词分界位置,但如果在字符类里使用代表退格
\t	制表符,Tab
\r	回车
\v	竖向制表符
\f	换页符
\n	换行符
\e	Escape
\0nn	ASCII代码中八进制代码为nn的字符
\xnn	ASCII代码中十六进制代码为nn的字符
\unnnn	Unicode代码中十六进制代码为nnnn的字符
\cN	ASCII控制字符。比如\cC代表Ctrl+C
\A	字符串开头(类似^,但不受处理多行选项的影响)
\Z	字符串结尾或行尾(不受处理多行选项的影响)
\z	字符串结尾(类似$,但不受处理多行选项的影响)
\G	当前搜索的开头
\p{name}	Unicode中命名为name的字符类,例如\p{IsGreek}
(?>exp)	贪婪子表达式
(?<x>-<y>exp)	平衡组
(?im-nsx:exp)	在子表达式exp中改变处理选项
(?im-nsx)	为表达式后面的部分改变处理选项
(?(exp)yes|no)	把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes)	同上,只是使用空表达式作为no
(?(name)yes|no)	如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes)	同上,只是使用空表达式作为no

内容引荐于: 正则表达式30分钟入门教程.

上一篇:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串点击打开查重,在点击关闭


下一篇:CPU0 处理器的架构及应用