@H_301_4@正则表达式、扩展正则表达式及其应用@H_301_4@@H_301_4@
@H_301_4@@H_404_13@
1.什么是正则表达式?@H_301_4@@H_301_4@
@H_301_4@
正则表达式(REGEXP:REGularEXPression),就是一种处理字符的方法,它以行为单位进行字符串处理的。其实就是透过一些特殊符号的辅助,来匹配筛选一些字符串,可以让使用者轻易的达到【搜寻/删除/取代】某些字符串的处理程序。@H_301_4@@H_301_4@
@H_301_4@
2.什么是扩展正则表达式?@H_301_4@@H_301_4@@H_301_4@
@H_301_4@
正则表达式依照不同的严谨度分为正则表达式和扩展正则表达式,扩展正则表达式可以处理更复杂的字符串。可以理解为是正则表达式式的扩充吧。@H_301_4@@H_301_4@
@H_301_4@
3.正则表达式与bash的通配符@H_301_4@@H_301_4@
@H_301_4@
刚开始接触通配符与正则表达式时,总是弄不清通配符与正则表达式的关系区别,什么时候用的是通配符,什么时候又是正则表达式。其实正则表达式是一种表示法,只要@H_301_4@@H_301_4@
@H_301_4@
工具程序支持这种表示法,该工具程序就可以用来作为正则表达式的字符处理之用。例如vi、grep、awk、sed等,因为它们支持正则表达式,所以,他们可以使用正则表达式进行字符处理。而我们最先接触的通配符其实是bash自己本身的通配符@H_301_4@,bash并不支持正则表达式,所以@H_301_4@bash只能用自己本身的通配符而已。@H_301_4@@H_301_4@@H_301_4@
@H_301_4@
4.@H_301_4@基本正则表达式与@H_301_4@扩展正则表达式@H_301_4@通配符@H_301_4@@H_301_4@ @H_301_4@
\{m,n\}@H_301_4@
@H_301_4@
匹配其前面的字符至少m次,至多n次@H_301_4@
@H_301_4@
{m,n}@H_301_4@
@H_301_4@
@H_301_4@
\(\)@H_301_4@
@H_301_4@
分组@H_301_4@(用于后向引用)@H_301_4@
@H_301_4@
()@H_301_4@
@H_301_4@ 或者@H_301_4@
@H_301_4@
[:space:]:空白字符@H_301_4@@H_301_4@
@H_301_4@[:punct:]:标点符号@H_301_4@@H_301_4@
@H_301_4@[:lower:]:小写字母@H_301_4@@H_301_4@
@H_301_4@[:upper:]: 大写字母@H_301_4@@H_301_4@
@H_301_4@[:alpha:]: 大小写字母@H_301_4@@H_301_4@
@H_301_4@[:digit:]: 数字@H_301_4@@H_301_4@
@H_301_4@[:alnum:]: 数字和大小写字母@H_301_4@@H_301_4@
6.正则表达式的应用@H_301_4@@H_301_4@@H_301_4@
1.grep、egrep@H_301_4@@H_404_13@
grep @H_301_4@:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来(做部分匹配,匹配时整行有部分被匹配到时,显示整行)egrep是grep的扩展,支持扩展正则表达式的元字符@H_301_4@
grep [options] PATTERN [FILE...]@H_301_4@
-i 不区分大小写@H_301_4@
@H_301_4@ -v: 显示没有被模式匹配到的行@H_301_4@
@H_301_4@ -o:只显示被模式匹配到的字符串@H_301_4@
-E 使用扩展的正则表达式@H_301_4@
@H_301_4@
grep -E = egrep@H_301_4@
2.sed@H_301_4@@H_404_13@
sed [ options ] 'AddressCommand' file ...@H_301_4@
-e script -e script: 可以同时执行多个脚本@H_301_4@
-f /path/to/sed_scripts file@H_301_4@
-r 表示使用扩展这则表达式@H_301_4@
Address: 1.StartLine,EndLine@H_301_4@
比如1,100@H_301_4@
$ 表示最后一行@H_301_4@
2./RegExp/ 模式匹配@H_301_4@
/^root/@H_301_4@
3./pattern1/,/pattern2/@H_301_4@
第一次被被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行@H_301_4@
4.linenumber @H_301_4@ 指定的行@H_301_4@
5.StartLine,+N @H_301_4@从startline开始,向后的N行:@H_301_4@
a\string 指定的行后面追加的新行,内容为string@H_301_4@
\n 可用于换行@H_301_4@
i\string 指定的行前面追加的新行,内容为string@H_301_4@
r file 将指定的文件的内容添加至符合条件的行处@H_301_4@
w 将指定地址的范围的行另存至指定的文件中@H_301_4@
s/parttern/string/修饰符 查找并替换 默认只替换每一行第一次出现的字符串@H_301_4@
加修饰符@H_301_4@
g 全局替换@H_301_4@
i 查找时忽略大小写@H_301_4@
在替换中不支持字符匹配,可以用&引用匹配到的内容,也支持后向引用@H_301_4@
(分割符可以是很多符号如@、#、/但分隔符必须相同)@H_301_4@
@H_301_4@正则表达式、扩展正则表达式及其应用@H_301_4@@H_301_4@
@H_301_4@@H_404_13@
1.什么是正则表达式?@H_301_4@@H_301_4@
@H_301_4@
正则表达式(REGEXP:REGularEXPression),就是一种处理字符的方法,它以行为单位进行字符串处理的。其实就是透过一些特殊符号的辅助,来匹配筛选一些字符串,可以让使用者轻易的达到【搜寻/删除/取代】某些字符串的处理程序。@H_301_4@@H_301_4@
@H_301_4@
2.什么是扩展正则表达式?@H_301_4@@H_301_4@@H_301_4@
@H_301_4@
正则表达式依照不同的严谨度分为正则表达式和扩展正则表达式,扩展正则表达式可以处理更复杂的字符串。可以理解为是正则表达式式的扩充吧。@H_301_4@@H_301_4@
@H_301_4@
3.正则表达式与bash的通配符@H_301_4@@H_301_4@
@H_301_4@
刚开始接触通配符与正则表达式时,总是弄不清通配符与正则表达式的关系区别,什么时候用的是通配符,什么时候又是正则表达式。其实正则表达式是一种表示法,只要@H_301_4@@H_301_4@
@H_301_4@
工具程序支持这种表示法,该工具程序就可以用来作为正则表达式的字符处理之用。例如vi、grep、awk、sed等,因为它们支持正则表达式,所以,他们可以使用正则表达式进行字符处理。而我们最先接触的通配符其实是bash自己本身的通配符@H_301_4@,bash并不支持正则表达式,所以@H_301_4@bash只能用自己本身的通配符而已。@H_301_4@@H_301_4@@H_301_4@
@H_301_4@
4.@H_301_4@基本正则表达式与@H_301_4@扩展正则表达式@H_301_4@通配符@H_301_4@@H_301_4@ @H_301_4@
\{m,n\}@H_301_4@
@H_301_4@
匹配其前面的字符至少m次,至多n次@H_301_4@
@H_301_4@
{m,n}@H_301_4@
@H_301_4@
@H_301_4@
\(\)@H_301_4@
@H_301_4@
分组@H_301_4@(用于后向引用)@H_301_4@
@H_301_4@
()@H_301_4@
@H_301_4@ 或者@H_301_4@
@H_301_4@
[:space:]:空白字符@H_301_4@@H_301_4@
@H_301_4@[:punct:]:标点符号@H_301_4@@H_301_4@
@H_301_4@[:lower:]:小写字母@H_301_4@@H_301_4@
@H_301_4@[:upper:]: 大写字母@H_301_4@@H_301_4@
@H_301_4@[:alpha:]: 大小写字母@H_301_4@@H_301_4@
@H_301_4@[:digit:]: 数字@H_301_4@@H_301_4@
@H_301_4@[:alnum:]: 数字和大小写字母@H_301_4@@H_301_4@
6.正则表达式的应用@H_301_4@@H_301_4@@H_301_4@
1.grep、egrep@H_301_4@@H_404_13@
grep @H_301_4@:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来(做部分匹配,匹配时整行有部分被匹配到时,显示整行)egrep是grep的扩展,支持扩展正则表达式的元字符@H_301_4@
grep [options] PATTERN [FILE...]@H_301_4@
-i 不区分大小写@H_301_4@
@H_301_4@ -v: 显示没有被模式匹配到的行@H_301_4@
@H_301_4@ -o:只显示被模式匹配到的字符串@H_301_4@
-E 使用扩展的正则表达式@H_301_4@
@H_301_4@
grep -E = egrep@H_301_4@
2.sed@H_301_4@@H_404_13@
sed [ options ] 'AddressCommand' file ...@H_301_4@
-e script -e script: 可以同时执行多个脚本@H_301_4@
-f /path/to/sed_scripts file@H_301_4@
-r 表示使用扩展这则表达式@H_301_4@
Address: 1.StartLine,EndLine@H_301_4@
比如1,100@H_301_4@
$ 表示最后一行@H_301_4@
2./RegExp/ 模式匹配@H_301_4@
/^root/@H_301_4@
3./pattern1/,/pattern2/@H_301_4@
第一次被被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行@H_301_4@
4.linenumber @H_301_4@ 指定的行@H_301_4@
5.StartLine,+N @H_301_4@从startline开始,向后的N行:@H_301_4@
a\string 指定的行后面追加的新行,内容为string@H_301_4@
\n 可用于换行@H_301_4@
i\string 指定的行前面追加的新行,内容为string@H_301_4@
r file 将指定的文件的内容添加至符合条件的行处@H_301_4@
w 将指定地址的范围的行另存至指定的文件中@H_301_4@
s/parttern/string/修饰符 查找并替换 默认只替换每一行第一次出现的字符串@H_301_4@
加修饰符@H_301_4@
g 全局替换@H_301_4@
i 查找时忽略大小写@H_301_4@
在替换中不支持字符匹配,可以用&引用匹配到的内容,也支持后向引用@H_301_4@
(分割符可以是很多符号如@、#、/但分隔符必须相同)@H_301_4@
或者@H_301_4@
grep @H_301_4@:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来(做部分匹配,匹配时整行有部分被匹配到时,显示整行)egrep是grep的扩展,支持扩展正则表达式的元字符@H_301_4@
grep [options] PATTERN [FILE...]@H_301_4@
-i 不区分大小写@H_301_4@
@H_301_4@ -v: 显示没有被模式匹配到的行@H_301_4@
@H_301_4@ -o:只显示被模式匹配到的字符串@H_301_4@
-E 使用扩展的正则表达式@H_301_4@
@H_301_4@
grep -E = egrep@H_301_4@