0
点赞
收藏
分享

微信扫一扫

正则表达式 笔记 regExpression Regular expression

正则表达式教程

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

\ 转义字符

在查找 . \ ( ) ^ * 等在正则表达式中代表特殊含义的字符时。
如:www.baidu.com www.baidu.com
常用转义字符

\a      报警字符(打印它的效果是电脑嘀一声)
\b 通常是单词分界位置,但如果在字符类里使用代表退格
\t 制表符,Tab
\r 回车
\v 竖向制表符
\f 换页符
\n 换行符

重复

*       重复0或更多次
+ 重复1次或更多次
? 重复1次或0次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

选择性字符

[aeiou]     aeiou中任意字符
[0-9] 匹配任意一个数字,等同于\d
[a-z0-9A-Z] 等同于\w(如果只考虑英文的话)

反义

\W          匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开关或结束位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

例:

<a[^>]+>        匹配用尖括号括起来的以a开关的字符串

替换

使用替换时,顺序是很重要的。
在匹配替换时,将会从左到或地测试每个分枝条件,如果满足了某个分枝的话,就不会支管其它的替换条件了。

例:

Windows98|Windows2000|WindowsXP

分组 用()括起来的分组

例:匹配IP地址:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
(exp)           匹配exp,并捕获文本到自动命名的组里
(?#comment) 用来注释

使用小括号的分组,都有一个组号,从左到右从1开始
后向引用 用于重复搜索前面某个分组匹配的文本

例:

\b(\w+)\b\s+\1\b        匹配重复的单词,如go go, ok ok

位置指定

(?=exp)         匹配exp前面的位置【0宽先行断言】
(?<=exp) 匹配exp后面的位置【0宽后行断言】
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置

例:

(?<![a-z])\d{7}匹配前面不是小写字母的七位数字

贪婪与懒惰

正则表达式在匹配字符时,通常是匹配尽可能多的字符。

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

例:字符串 aabab

a.*?b       匹配 aab
a.*b 匹配 aabab


举报

相关推荐

0 条评论