正则表达式
正则表达式
REGEXP:Regular Expressions。由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符的字面意义,而表示控制或通配的功能,类似增强版的通配符功能。但于通配符不同,通配符的作用是处理文件名,而正则表达式则是处理文本内容中的字符。
正则表达式被很多程序和开发语言所广泛支持:vim、less、grep、sed、awk、nginx、mysql等
正则表达式也分两类:
- 基本正则表达式:BRE
- 扩展正则表达式:ERE
正则表达式引擎:采用不同算法,检查处理正则表达式的软件模块。如:PCRE(Perl Compatible Regular Expressions)
正则表达式的元字符分类:字符匹配、次数匹配、位置锚定、分组
如何查看正则表达式的帮助:man 7 regex
基础正则表达式
字符匹配
[] 作用是匹配其中的任意单个字符
1 | . #匹配任意单个字符 |
匹配次数
用在要指定次数的字符后,用于指定前面的字符出现次数
1 | * #匹配前面字符任意次,包括0次。但如果可能,尽可能长的匹配 |
位置锚定
位置锚定用于定位字符出现的位置
1 | ^ #行首锚定,用于模式的最左侧 |
分组及其它
分组
分组:使用小括号()将多个字符捆绑在一起,当作一个整体处理(括号也需要用\转义)
后向引用:分组括号中的模式所匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1、\2、\3、…
\1表示从左侧起第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
注:\0表示正则表达式所匹配的所有字符
1 | #ab,然后c出现3次 |
或者
或者:|
1 | a\|b #a或b |
扩展正则表达式元字符
字符匹配
1 | . #任意单个字符 |
匹配次数
1 | * #匹配前面字符任意次 |
位置锚定
1 | ^ #行首 |
分组其它
1 | ()分组 #后向引用:\1,\2,... 注意:\0表示正则表达式匹配的所有字符 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 不存在的博客!