欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux正则表达式

程序员文章站 2022-06-26 16:14:00
...

C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通的。

如果要用grep查找一个模式,如何表示这个模式,这一类字符串,而不是

特定的字符串呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息:

字符类:如上例的x和y,它们在模式中表示一个字符,但是取值范围是一类字符中的任意一个。

数量限定符:邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-3个y字符

各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符@和.隔开,IP地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述。为了表示位置关系,还有位置限定符的概念。

规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式。

字符类

Linux正则表达式

数量限定符

Linux正则表达式

再次注意grep找的是包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是

aaabc
aad
efg

查找a*这个模式的结果是三行都被找出来了

$ egrep 'a*' testfile
aabc
aad
efg

Linux正则表达式

位置限定符

Linux正则表达式

位置限定符可以帮助grep更准确地查找,例如上一节我们用[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}查找IP地址,找到这两行

192.168.1.1
1234.234.04.5678

Linux正则表达式

其它特殊字符

Linux正则表达式

匹配特定字符串:

Linux正则表达式

正则表达式匹配身份证号码:

Linux正则表达式

正则表达式匹配电子邮箱或者电子邮件地址

Linux正则表达式

正则表达式匹配电话号码和手机号码:

Linux正则表达式

正则表达式匹配用户密码:

Linux正则表达式

正则表达式匹配日期时间:

Linux正则表达式

正则表达式匹配IP地址

Linux正则表达式

正则表达式匹配汉字或中文

Linux正则表达式