正则表达式

文章目录

  • 工具
  • 限定符
  • 或运算符
  • 元字符
  • 贪婪与懒惰匹配
  • 实例:
    • 16进制颜色值匹配
    • ip地址的匹配
  • 高级部分
  • 参考资料

工具

http://regex101.com
页面解读

限定符

匹配对象是一个字符

符号 解释
? 限定符,前面的字符要出现0次或者[1]次,/used?代表d出现0次或者1次,也就是可有可无
* 前面的字符要出现0或者多次
+ 匹配出现1次以上的字符
{} 指定前面字符出现的次数或者范围

{}匹配例子:ab{6}c:出现6次b,ab{2,6}:出现2次到6次,如果想出现两次以上:ab{2,}

例子:

ac
abc
abbbbbc
adc
addddc

如果想匹配多个字符的重复,比如想匹配ababababc,ab重复,可以将ab括起来,再加限定符这里可以用(ab)+

或运算符

示例:

a cat
a dog
a bird

a (cat|dog):a后面是空格,后面括号代表要么是dog要么是cat、括号不可少,否则就变成了a cat|dog也就是要么是a cat 要么是dog。
字符类:[abc]+,方括号里的内容代表内容只能取自他们

abc 
tiger
aabbcc
dog

可以在[]里指定范围:[a-zA-z]代表所有英文字符
再括号的前面加一个^号代表括号内之外的字符[^1-9]代表数字字符之外的字符

元字符

空格…
正则表达式中的大多数元字符都是以\开头

写法 解释
\d 数字字符=[0-9]
\D 非数字字符=[^0-9]
\w 单词字符=[a-zA-z0-9]
\W 非单词字符=[^a-zA-z0-9]
\s 空白符,包含tab与换行符
\S 非空白字符
. 任意字符,不包含换行符
^ 匹配行首:^a只会匹配行首的a
$ 匹配行位:a$只会匹配行尾的a

贪婪与懒惰匹配

*+{}默认匹配尽可能多的字符

<span><b>This is a sample textb>span>

想要匹配
<.+>:结果是全部匹配了,因为.会匹配尽可能多的字符
解法:
<.+?>:将贪婪匹配切换为懒惰匹配

实例:

16进制颜色值匹配

#00
#ffffff
#ffaaff
#00hh00
#aabbc
#000000
#ffffffff

可以用\b代表字符边界,可以作为边界,你也就不要向下匹配了,就像这里的最后一个一样
实例代码:#[a-fA-f0-9]{6}\b

ip地址的匹配

123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is a string
123.123.0

四段数字构成,数字段之间用.隔开,注意这里.是指代所有字符,要用原本的意思进行转义\.

高级部分

捕获、断言、平衡组,递归

参考资料

正则表达式30分钟入门教程 作者:deerchao
Regex tutorial—A quick cheatsheet by examples (英文) 作者:Jonny FoxRegular Expressions Tutorial (英文)

你可能感兴趣的:(笔记,正则表达式)