正则表达式记录

正则表达式

转义字符

字符解释
\n换行符
\t制表符
\\代表\本身
\^,\$,\.,\(,\),\{,\},\?,\+,\*,\|,\[,\]匹配这些字符本身

标准字符集合

字符解释
\d任意一个数字,0~9中的任意一个
\w任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中任意一个
\s包括空格、制表符、换行符等空白字符的其中任意一个
.小数点可以匹配任意一个字符,但是不包括\n,如果要匹配包括\n在内的所有字符,一般用[\s\S]

除了“.”之外都区分大小写,大写就是相反的意思

自定义字符集合

字符解释
[ab5@]匹配a或b或5或@
[^abc]匹配abc之外的任意一个字符
[a-z]匹配a~z之间的任意一个字母
[^a-d0-3]匹配a~d和0~3之外的任意一个字符

除了^-\之外的特殊符号,如果被包含在中括号中,则失去特殊意义

量词

字符解释
{n}表示匹配到n次
{m,n}表示匹配m到n次,最少m,最大n
{n,}表示至少匹配到n次
?表示匹配到0次或1次,等价于{0,1}
  • | 表示至少匹配到1次,等价于{1,}
  • | 表示不匹配或匹配任意次,等价于{0,}

默认量词匹配模式为贪婪模式,也就是能多匹配就多匹配,如果在量词后加上"?"则会更改为非贪婪模式,意思是满足最低匹配规则就停止继续匹配。

例如:“123456"如果是匹配”\d{2,6}“的话则会匹配到:“123456”,如果是匹配”\d{2,6}?“的话则会分别匹配到"12”,“34”,“56”

位置匹配

字符解释
^匹配字符串开始的位置
$匹配字符串结束的位置
\b匹配一个单词的边界,在匹配中不光hello是一个单词,hello123也会被当作一个单词
(?=exp)该位置后面会匹配到exp
(?<=exp)该位置前面会匹配到exp
(?!exp)该位置后面不会匹配到exp
(?<!exp)该位置前面不会匹配到exp

位置匹配不会匹配到带有宽度的字符,而仅仅是匹配位置,可以理解成位置的逻辑判断

匹配模式

字符解释
IgnoreCase忽略大小写模式
SingleLine单行模式,是否将整个字符视为一行,只有一个开头和结尾,同时".“可以匹配到”\n"
MultiLine多行模式,每行字符都有独自的开头和结尾,此时如果要匹配绝对开头或结尾则需要使用"\A"和"\Z"代替"^“和”$"

不同软件或语言中匹配模式的英文单词不一定是"IgnoreCase"、“SingleLine”、“MultiLine”,请根据实际情况作出判断(例如有时候忽略大小写的单词为CaseInsensitive,多行模式的英文单词为LineBreak),大多数情况下默认的匹配模式为:区分大小写、多行模式

分组和引用

字符解释
|"与或非"中"或"的关系,表示满足左边或右边都会被匹配到
()括号中的表达式作为一个整体,同时可以被引用
(?:exp)括号中的表达式作为一个整体,但是不可以被引用

例如:

"goto gogo"这串字符

如果匹配 “[a-z]{2}” 的话,则会匹配到"go",“to”,“go”,“go”;

如果是匹配 “([a-z]{2})\1” 的话,则会匹配到:“gogo”;

如果是匹配 “(?:[a-z]{2})\1” 的话,则什么都匹配不到。

引用可能会造成性能降低,所以尽可能的使用(?:exp)这种形式

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值