正则表达式

元字符:[
转义字符:\d
\D: 匹配任何一个非数字字符

点号:匹配任何字符,但一般不匹配行起始符

使用捕获分组(capturing group)来匹配电话号码中的某一部分。然后使用后向引用(backreference)对分组中的内容进行引用。要创建捕获分组,先将一个\d放在一对圆括号中,这样就将它放入了一个分组中,后面可以用\1来对捕获的内容进行后向引用:

(\d)\d\1

\1对括号内分组捕获的内容进行了反向引用。这个正则表达式匹配的是区号707。以下是对该表达式的详细分析:

  • (\d)匹配第一个数字并将其捕获(数字7);

  • \d匹配第二个数字(数字0)但没有捕获,因为没有括号;

  • \1对捕获的数字进行反向引用(数字7)。

量词: 问号是另一种量词,在以上表达式中表示连字符是可选的。也就是说,连字符可以不出现或只出现一次。

         加号(+)表示“一个或多个”,星号(*)表示“零个或多个”。

        花括号中的数字表示待查找的数字出现的次数

非: [^0-9]非0-9之间的字符

\D\w的区别是\D会匹配空格、标点符号(引号、连字符、反斜杠、方括号)等字符,而\w却不会,它只匹配字母、数字和下划线。

字符简写式

字符简写式 描述
\a 报警符
[\b] 退格字符
\c x 控制字符
\d 数字字符
\D 非数字字符
\o xxx 字符的八进制值
\w 单词字符
\W 非单词字符
\0 空字符
\x xx 字符的十六进制值
\u xxx 字符的Unicode值

匹配各种空白符的简写式

字符简写式 描述
\f 换页符
\h 水平空白符
\H 非水平空白符
\n 换行符
\r 回车符
\s 空白符
\S 非空白符
\t 水平制表符
\v 垂直制表符
\V 非垂直制表符
^ $ ,也叫做 锚位符 (anchor)

\b匹配单词边界

还可以匹配非单词边界。非单词边界匹配除单词边界之外的位置,比如单词或者字符串中的字母或数字。要匹配一个非单词边界,试一下:

\Be\B

匹配空格和单词字符,可以创建这样一个字符组:

[\w\s]

它等同于:

[_a-zA-Z \t\n\r]

用下面的表达式查找0~99的偶数:

\b[24680]\b|\b[1-9][24680]\b

如果你想要两个字符组的并集,可以这样做:

[0-3[6-9]]

正则表达式处理器会匹配0到3之间的数字或者6到9之间的数字。

匹配差集(实质上就是减操作):

[a-z&&[^m-r]]

这匹配a到z之间的字符,但其中m到r之间的字符除外

基本量词

语法 描述
? 零个或一个(可选)
+ 一个或多个
* 零个或多个

范围语法总结

语法 描述
{n} 精确匹配n
{n,} 匹配n次或更多次
{m,n} 匹配mn
{0,1} 与?相同 (零次或一次)
{1,0} 与+相同 (一次或更多)
{0,} 与*相同 (零次或更多)

懒惰量词

语法 描述
?? 懒惰匹配零次或一次(可选)
+? 懒惰匹配一次或多次
*? 懒惰匹配零次或多次
{n}? 懒惰匹配n
{n,}? 懒惰匹配n次或多次
{m,n}? 懒惰匹配mn
懒惰就是 在普通量词后添加一个问号(?)。它每次只“吃”一点。

占有量词就是在普通量词之后添加一个加号(+)。它不“咀嚼”而是直接“吞咽”,然后才想知道“吃”的是什么。

常用的元字符
代码 说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束
常用的限定符
代码/语法 说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

常用的反义代码
代码/语法 说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

例子:\S+匹配不包含空白符的字符串

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

常用分组语法
分类 代码/语法 说明
捕获(exp)匹配exp,并捕获文本到自动命名的组里
(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读


http://deerchao.net/tutorials/regex/regex.htm(正则表达式30分钟入门教程)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值