正则表达式
正则表达式的语法
特殊字符
- $ 匹配输入字符串的结尾位置
- () 标记一个子表达式的开始和结束位置,不加()则认为前面的一个字符是子表达式
-
- 匹配前面的子表达式零次或多次
-
- 匹配前面的子表达式一次或多次
- . 匹配除换行符 \n 之外的任何单字符
- [] 标记一个中括号表达式的开始
- ? 匹配前面的子表达式零次或一次
- \ 转义符
- ^ 匹配输入字符串的开始位置,在[]中使用,表示不接受该字符集合
- {} 标记限定符表达式的开始,{m,n},最少匹配 n 次且最多匹配 m 次
- | 两项之间的一个选择
- \b 匹配一个单词边界,即字与空格间的位置
注意:
- . 匹配任意除换行符“\n”外的字符;
- *表示匹配前一个字符0次或无限次;
- +或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复;
- .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。
正则表达式的使用
使用正则表达式进行替换
在查找的时候用括号括起来的代表一部分,在替换的时候可以用\1,\2…引用.例如:
(time[0-9]) -> a\1b
time1将被替换为atimeb.