常用工具-正则表达式

1. 匹配单个字符

. 可以匹配任意单个字符。(大部分不能匹配换行符)

2. 匹配一组字符

[ ]定义一个字符集合;0-9、a-z定义一个字符区间;^取非操作。

abc[^0-9]  //abc开头,最后一位不为数字

3. 元字符

3.1 匹配空白字符

元字符 说明
[\b] 回退一个字符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\v 垂直制表符

3.2 匹配特定字符

元字符 说明
\d 数字字符,等价[0-9]
\D 非数字字符,等价[^0-9]
\w 大小写+下划线+数字,等价[a-zA-Z0-9_]
\W 对上面的取非,等价[^a-zA-Z0-9_]
\s 任何一个空白字符,等价[\f\n\t\v\r]
\S 对上取非

4. 重复匹配

  • + 匹配1个或多个字符
  • * 匹配0个或多个字符
  • ?匹配0个或1个字符
    +和*是贪婪型元字符,会尽可能多地匹配内容,?是懒惰型。
[\w.]+@\w+\.\w+    //匹配邮箱地址
a.+c    //这个就能匹配abcabcabcabc
  • {n} 匹配n个字符
  • {m,n} 匹配m~n个字符
  • {m, }至少匹配m个字符

5. 位置匹配

  • \b 匹配一个单词边界
  • \B匹配非单词边界的位置
  • ^ 匹配字符串开头
  • $ 匹配结尾
^\s*\/\/.*$   //匹配以//开头的注释行

6. 子表达式

  • () 定义子表达式
  • | 把左边和右边看成两个部分,只要有一个匹配就可
(ab){2,}  //匹配至少两个ab相连
(19|20)\d{2}  //匹配19或者20开头的年份

7. 回溯引用

\n表示引用第n个子表达式,其与引用的子表达式匹配内容一致。

<(h[1-6])>\w*?<\/\1>    //匹配HTML的标题元素<h1>x</h1>

8. 替换

//查找正则表达式
(\d{3})(-)(\d{3})(-)(\d{4})
//替换正则表达式
//在第一个子表达式查找的结果加上 () 
//然后加一个空格
//在第三个和第五个字表达式查找的结果中间加上-进行分隔。
($1) $3-$5

8.1 大小写转换

元字符 说明
\l 把下个字符转换为小写
\u 把下个字符转换为大写
\L 把\L 和\E 之间的字符全部转换为小写
\U 把\U 和\E 之间的字符全部转换为大写
\E 结束\L 或者\U
(\w)(\w{2})(\w) //查找正则
$1\U$2\E$3  //将第二个和第三个字符转为大写

9. 前后查找

  • ?= 向前查找,匹配文本不出现在匹配结果里,必须在子表达式中使用。
.+(?=:)  //匹配网址,返回http而不是http:
  • ?<= 向后查找,匹配文本不出现在匹配结果里,必须在子表达式中使用。
(?<=\$)[0-9.]+  //匹配金钱数目,返回23.54而不是$23.54
  • 取非操作用!

10. 嵌入条件

  • 回溯引用条件:先判断某个子表达式,若匹配则继续匹配后续内容。
//(\() 匹配一个左括号
//?(1) 当表达式1匹配,则继续后续匹配,这里是匹配右括号
(\()?abc(?(1)\))
  • 前后查找条件:在向前查找或向后查找操作取得成功后,才继续匹配后续内容。极少用到。
发布了117 篇原创文章 · 获赞 8 · 访问量 3701

猜你喜欢

转载自blog.csdn.net/qq_34761012/article/details/104559431