其他分享
首页 > 其他分享> > 正则表达式

正则表达式

作者:互联网

简介 Introduction

正则表达式(Regular Expression) 是计算机科学的一个概念,正则表达式是使用单个字符串来描述和匹配一系列符合句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索和替换那些符合某个模式的文本。


匹配规则

字面量字符和元字符

在正则表达式中,只表示其自身字符含义的叫做字面量字符。其实,大部分字符都表示字面含义。如:

/a/    #匹配 'a'
/b/   #匹配 'b'
/ab/   #匹配 'ab'

还有一些字符代表特殊含义,而不是其自身意义,叫做元字符,如:

/a|b/      #匹配 'a' 或者 'b'
/a|b|c/   #匹配 'a' 或 'b' 或 'c'
/ab|cd/   #匹配 'ab' 或 'cd' 而不匹配 'a' 或 'b' 或 'c' 或 'd'
/a.b/  #可匹配a,b之间任意字符,如:'acb','a0b'等,但不匹配中间含有多个字符的情况
/^123/  #可匹配'123'出现在开始位置的字符串,如'12345'
/123$/ #可匹配'123'出现在结束位置的字符串,如'0123'

转义字符

如果想要匹配正则表达式中的元字符本身,则需要在它们前面加反斜杠\,如:

/a\+b/  #匹配 'a+b'

正则表达式中需要反斜杠转义的有:.^${[()\+*


特殊字符

正则表达式对一些不能打印的字符提供了特殊的表示方法:


字符类

字符类表示给定一系列字符,只要匹配其中任意一个即可。字符序列被放入方括号[]中,如:

/[abc]/  #可匹配'app,因为'app'含有字符'a',但不能匹配'def',因为'def'不含'abc'中任意一个
/[^abc]/  #可以匹配'cde',但不能匹配'cba'

修饰符

修饰符放在正则表达式的末尾,表示一些附加规则,如:

/abc/i     #可匹配 'abc' 或 'ABC'
/name$/    #不能匹配'my name\n'因为结尾不是name,而是换行符
/name$/m #可以匹配'my name\n'
/aaaaa/    #只匹配第一个'a'
/aaaaa/g #匹配所有的'a'

数量符

数量符用来表示某个模式的出现次数。

/n?ame/  #可匹配'name','ame'
/n*ame/ #可匹配'name','ame','nname'
/n+ame/ #可匹配'name','nname'

数量符默认为贪婪匹配,在数量符后加?可以将其变为非贪婪匹配:

贪婪匹配指匹配到下一个字符不满足要求为止,而非贪婪匹配则只匹配到第一个满足要求的字符。


重复

表示模式的精确匹配次数,使用大括号{}表示。{n}表示恰好重复n次,{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次。

/a{2}b/   #可匹配'aab'
/a{2,}b/ #可匹配'aab','aaab'
/a{2,4}b/ #匹配'aaab'

预定义

预定义模式指的是某些常见模式的简写方式。

标签:表示,字符,匹配,name,正则表达式,模式
来源: https://www.cnblogs.com/risejl/p/16695254.html