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