正则表达式
-
概念:使用单个字符串来描述,匹配一系列符合某个句法规则的字符串
-
常用测试工具:
RegexBuddy -
正则表达式:
(1)正则表达式元字符(常用):
. : 匹配除换行符以外的任意字符
\w :匹配字符或数字或下划线
\s :匹配任意空白字符
\d : 匹配数字
\b : 匹配单词的开始或结束
^ : 匹配字符串的开始
$ : 匹配字符串的结束
eg:\ba\w*\b 匹配以字母a开头的单词
(2)正则表达式字符转义:用\ 来取消这些字符的意义
eg:deerchao.net deerchao.net
(3)正则表达式重复:
* : 重复0次或更多次
+ : 重复1次或更多次
? : 重复1次或0次
{n}: 重复n次
{n, }: 重复n次或更多次
{n,m}: 重复n次到m次
(4)正则表达式字符类:
确定字符集合:[]
[aeiou]英文元音字母 [.?!]匹配标点符号
(5)正则表达式分支条件:
用|将几种条件分隔开
(6)正则表达式的分组:
用小括号( )确定子表达式
(7)正则表达式之反义:
\W:匹配不是字母,数字,下划线,汉字的字符
\S:匹配任一不是空白的字符
\D:匹配任一非数字的字符
\B:匹配不是单词开头的字符
[^x]:匹配除x以外的任以字符
[^aeiou]:匹配除了aeiou几个字母以外的任意字符
(8)正则表达式之后向引用:
确定数组分组捕获的内容,使可以在表达式或其他程序
中进一 步处理
\1代表分组1匹配的文本
特殊:
确定组名: (?<name>\w+)或(?’word’\w+)
反向引用: \k<word>
捕获:
(exp) 匹配exp前面的位置
(?<name>exp) exp后面的位置
(?:exp) 匹配exp不捕获
零宽断言:
(?=exp):匹配exp前面的位置
(?<=exp):匹配exp后面的位置
(?!exp):匹配后面跟的不是exp的位置
(?<!exp):匹配前面不是exp的位置
(?#comment)注释
\b\w+(?=ing\b):若查找I’m singing while you’re dancing———会匹配sing和danc