Linux正则表达式
程序员文章站
2022-06-26 16:14:00
...
C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通的。
如果要用grep查找一个模式,如何表示这个模式,这一类字符串,而不是
特定的字符串呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息:
字符类:如上例的x和y,它们在模式中表示一个字符,但是取值范围是一类字符中的任意一个。
数量限定符:邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-3个y字符
各种字符类以及普通字符之间的位置关系:例如邮件地址分三部分,用普通字符@和.隔开,IP地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述。为了表示位置关系,还有位置限定符的概念。
规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式。
字符类
数量限定符
再次注意grep找的是包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是
aaabc
aad
efg
查找a*这个模式的结果是三行都被找出来了
$ egrep 'a*' testfile
aabc
aad
efg
位置限定符
位置限定符可以帮助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
其它特殊字符
匹配特定字符串:
正则表达式匹配身份证号码:
正则表达式匹配电子邮箱或者电子邮件地址
正则表达式匹配电话号码和手机号码:
正则表达式匹配用户密码:
正则表达式匹配日期时间:
正则表达式匹配IP地址
正则表达式匹配汉字或中文
下一篇: 在新版Vue中引入外部字体