系统相关
首页 > 系统相关> > 在 Linux 中处理字符用到的常用正则表达式语法

在 Linux 中处理字符用到的常用正则表达式语法

作者:互联网

前言

正则表达式广泛地应用在各种编程语言中,包括 Perl、PHP、Ruby 等。Linux 也大量采用了正则表达式。有字符处理地地方,就有正则表达式地身影。正则表达式是一种概念,有各种风格的正则表达式,没有什么标准可言,不同的软件和编程语言支持不同风格的表达式写法。

Linux 有两套库课用于正则表达式编程:POSIX 库和 PCRE 库。前者是 Linux 自带的正则表达式库,后者是 Perl 的正则表达式库。

非单词匹配

“单词”指的是两侧由非单词字符分隔的字符串。非单词字符指的是字母、数字、下划线以外的任何字符。

image

如上图。第 1~5 行都属于单词,子串(hm、cat等)两边都是字母,符合单词的定义;第 6~15 行,不包括第 14 行,子串 bat、sat 等左右两侧都是非单词符号。在匹配时加上\<[expression]\>这样的分隔符,就能匹配第五行之后但不包括第十四行的字符。

image

字符转义

正则表达式的元字符就是诸如 *、+、?、[] 之类的符号。如果字符当中就是要匹配这些字符,在正则表达式中就必须要对它们进行转义,在元字符前加上\,也就是让正则表达式忽略这些元字符,当成普通的符号。

重复匹配

元字符 描述
* 重复0次或多次
+ 重复1次或多次
? 重复0次或1次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n, m} 重复不少于 n 次,不多于 m 次

如下图,匹配这些字符当中,开头是 Ak 的,且 k 重复 2 次或更多次的字符。

image

开头的元字符是^,结尾的元字符是$

image

子表达式

上面的重复表达式都是对前一个子串进行匹配,假如有一个字符串 fofofoooffffofooofo,匹配 fo 出现的次数只能是 2 次,就得把 fo 用一对小括弧括起来再添加重复匹配得元字符。

image

如果不把 fo 括起来,得到的结果如下:

image

匹配的是 o 出现的次数是 2 次。

反义

反义就是除了这个以外的所有子串都能被匹配。反义的符号是^,跟开头元字符是一样的,但反义是在[]中使用的。开头元字符跟子串相连使用。

image

如上图,除了 a、t 以外的子串都能被匹配,也就是白色的字母是不被选择的。

分支

分支就是或的意思,假如要求匹配开头以 x 或 y 的字符:

image

总结

Linux 用到的表达式用不着这么复杂,比较也就简单的做一个内容查找的功能,想要的字符应该也不是那么复杂。其实网上都有很多常用的正则表达式,直接 copy 过来用就行。正则表达式还有很多语法可以学,比如逆向引用。

标签:字符,匹配,正则表达式,用到,单词,重复,Linux,元字符
来源: https://www.cnblogs.com/Enziandom/p/16698529.html