最新消息:

Linux相关正则表达式基础整理

Linux ipcpu 4721浏览 0评论

Linux相关正则表达式基础整理

第一章 概述

正则表达式
在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串。

正则表达式通常缩写成"regex"。

在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容;许多程序设计语言都支持利用正则表达式 进行字符串操作。

第二章 字符组

2.1 普通字符组

  1. #///@字符组表示“在同一个位置可能出现的各种字符”,写法是在一对方括号[]中列出所有可能出现的字符
  2. [abcdefghijklmn]
  3. [0123456789]
  4. #///@范围表示法,就是用[x-y]形式表示x到y整个范围内的字符
  5. [a-zA-z]
  6. [0-9]
  7. #///@起始与结束
  8. ^和$ 分别表示"定位到字符串的起始位置""定位到字符串的结束位置"

2.2 元字符和转义

字符组的开方括号[、闭方括号]和之前出现的^、$都算元字符。在匹配中,它们有着特殊的意义。但是,有时候并不需要表示这些特殊意义,只需要表示普通字符(比如"我就想表示横线字符-"),此时就必须做特殊处理,写成\^、\$、\[、\]。

对常用量词所使用的字符+、*、?来说,如果希望表示这三个字符本身,直接添加反斜线,变为\+、\*、\?即可。但是在一般形式的量词{m,n}中,虽然具有特殊含义的字符不止一个,转义时却只需要给第一个{添加反斜线即可,也就是说,如果希望匹配字符串{m,n},正则表达式必须写成{m,n}。

2.3 排除型字符组

排除型字符组(Negated Character Class)非常类似普通字符组[…],只是在开方括号[之后紧跟一个脱字符^,写作[^…],表示"在当前位置,匹配一个没有列出的字符"。

所以[^0-9]就表示"0~9之外的字符",也就是"非数字字符"。那么,[^0-9][0-9]就可以表示第一个字符不是数字字符,第二个字符才是数字字符。

2.4 字符组简记法

2.5 POSIX字符组

第三章 量词

3.1 量词的一般形式

3.2 常用量词

第四章 Linux常用命令与正则表达式

正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

但是随着逐渐发展,扩展出以下几个类型。

基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

4.1 grep命令

grep 指令后不跟任何参数,则表示要使用BREs
grep 指令后跟 "-E" 参数,则表示要使用EREs
grep 指令后跟 "-P" 参数,则表示要使用PREs

4.2 egrep命令

egrep 指令后不跟任何参数,则表示要使用 EREs
egrep 指令后跟 "-P" 参数,则表示要使用 PREs

4.3 sed命令

sed 指令默认是使用 BREs
sed 命令参数 "-r " 则表示要使用 EREs

4.4 awk命令

awk 指令默认是使用 EREs

第五章 BREs、EREs、PREs的区别

5.1 字符组的区别对照

5.2 量词的对照

参考资料

《正则指引》余晟著
http://book.51cto.com/art/201204/332381.htm
http://deerchao.net/tutorials/regex/regex-1.htm
http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html

来自为知笔记(Wiz)

转载请注明:IPCPU-网络之路 » Linux相关正则表达式基础整理

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址