ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-09-16 02:00:33  阅读:234  来源: 互联网

标签:字符 匹配 正则表达式 用到 单词 重复 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有