正则表达式
1. 正则表达式是什么?
正则表达式(Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,是一种字符模式,用于在查找过程中匹配指定的字符。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
支持正则表达式的程序如:locate |find| vim| grep| sed |awk
2. 正则能干什么?
- 匹配邮箱、匹配身份证号码、手机号、银行卡号等
- 匹配某些特定字符串,做特定处理等等
3. 正则当中名词解释
-
元字符
指那些在正则表达式中具有特殊意义的专用字符,如:点(.) 星(*) 问号(?)等
-
前导字符
位于元字符前面的字符. abc* aooo.
4. 第一类正则表达式
㈠ 正则中普通常用的元字符
元字符 | 功能 | 备注 |
---|---|---|
. | 匹配除了换行符以外的任意单个字符 | |
* | 前导字符出现0次或连续多次 | |
.* | 任意长度字符 | ab.* |
^ | 行首(以…开头) | ^root |
$ | 行尾(以…结尾) | bash$ |
^$ | 空行 | |
[] | 匹配括号里任意单个字符或一组单个字符 | [abc] |
[^] | 匹配不包含括号里任一单个字符或一组单个字符 | [^abc] |
[1] | 匹配以括号里任意单个字符或一组单个字符开头 | [2] |
^[^] | 匹配不以括号里任意单个字符或一组单个字符开头 | ^[^abc] |
- 示例文本
# cat 1.txt
ggle
gogle
google
gooogle
goooooogle
gooooooogle
taobao.com
taotaobaobao.com
jingdong.com
dingdingdongdong.com
10.1.1.1
Adfjd8789JHfdsdf/
a87fdjfkdLKJK
7kdjfd989KJK;
bSKJjkksdjf878.
cidufKJHJ6576,
hello world
helloworld yourself
㈡ 正则中其他常用元字符
元字符 | 功能 | 备注 |
---|---|---|
/< | 取单词的头 | |
/> | 取单词的尾 | |
/< /> | 精确匹配 | |
/{n/} | 匹配前导字符连续出现n次 | |
/{n,/} | 匹配前导字符至少出现n次 | |
/{n,m/} | 匹配前导字符出现n次与m次之间 | |
/( /) | 保存被匹配的字符 | |
/d | 匹配数字(grep -P) | [0-9] |
/w | 匹配字母数字下划线(grep -P) | [a-zA-Z0-9_] |
/s | 匹配空格、制表符、换页符(grep -P) | [/t/r/n] |
举例说明:
需求:将10.1.1.1替换成10.1.1.254
1)vim编辑器支持正则表达式
# vim 1.txt
:%s#/(10.1.1/).1#/1.254#g
:%s//(10.1.1/).1//1.254/g
2)sed支持正则表达式【后面学】
# sed -n 's#/(10.1.1/).1#/1.254#p' 1.txt
10.1.1.254
说明:
找出含有10.1.1的行,同时保留10.1.1并标记为标签1,之后可以使用/1来引用它。
最多可以定义9个标签,从左边开始编号,最左边的是第一个。
需求:将helloworld yourself 换成hellolilei myself
# vim 1.txt
:%s#/(hello/)world your/(self/)#/1lilei my/2#g
# sed -n 's//(hello/)world your/(self/)//1lilei my/2/p' 1.txt
hellolilei myself
# sed -n 's/helloworld yourself/hellolilei myself/p' 1.txt
hellolilei myself
# sed -n 's//(hello/)world your/(self/)//1lilei my/2/p' 1.txt
hellolilei myself
Perl内置正则:
/d 匹配数字 [0-9]
/w 匹配字母数字下划线[a-zA-Z0-9_]
/s 匹配空格、制表符、换页符[/t/r/n]
# grep -P '/d' 1.txt
# grep -P '/w' 2.txt
# grep -P '/s' 3.txt
㈢ 扩展类正则常用元字符
丑话说在前面:
我说我比较特殊,你要相信!否则我错给你看
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/244514.html