正则表达式
在讲正则表达式前先了解一个概念——元字符(Metacharacters),元字符是用来阐述字符表达式意义的字符。简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。 那么,正则表达式即是由一串字符和元字符构成的字符串,简称RE(Regular Expression)。正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。 使用正则表达式的一些Shell工具如sed、awk、grep、uniq等,都可看作是数据过滤器,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。 正则表达式的基本元素包括普通字符和元字符,其中元字符有*、^、$、[]等,Shell赋予了这些字符超越字面意思的意义。因此我们的主要目的是掌握正则表达式中元字符的意义,能熟练运用正则表达式构建一个“规则字符串”,用于表达一种对字符串的过滤逻辑。下面简单介绍一些元字符的意义和用法。 1、“*”符号——用于匹配前面一个普通字符的0此或多次重复。 2、“.”符号——用于匹配任意一个字符 3、“^”符号——用于匹配行首,表示行首的字符就是“^”字符后面的那个字符。 4、“$”符号——用于匹配行尾,放在匹配字符之后,与“^”的功能和用法相反。 5、“[]”方括号——用于匹配字符集合,支持穷举法列出字符集合的所有元素,也支持使用“-”符号表示字符集合的范围,例如[012345]、[a-z]。 注意:“^”放在“[]”外面表示匹配行首,但放在“[]”里面则表示取反,如[^b-d]表示匹配除b、c、d外的字符。 6、“”符号——为转义符,用于屏蔽一个元字符的特殊意义。 7、“&;&;”符号——用于精确匹配,利用“”符号屏蔽“<>”符号。 8、“{}”系列符号——用于表示前一个字符的重复,与“*”类似,但“{}”可以指定重复次数,如[0-9]{3} 表示匹配3个十进制数字。该符号包括三种形式: {n}:匹配前面字符n次 {n,}:匹配前面字符至少n次 {n,m}:匹配前面字符n~m次 除了上述的元字符外,awk等工具还支持一些扩展的元字符,包括: “?”符号——用于匹配0个或1个前面的字符。 “+”符号——用于匹配1个或多个前面的字符。 “()”——表示一个字符集合或用于expr中。 “|”——表示“或”,用于匹配一组可选的字符。 我们需要明白bash本身不支持正则表达式,使用正则表达式的是Shell命令和工具,但是bash Shell可以使用正则表达式中的一些元字符实现通配功能。常用的通配符包括正则表达式元字符:?、*、[]、{}、^ 等,可是这些元字符在通配中的意义与正则表达式中的意义不完全一致 T_T 。 例如:“*”符号表示任意位的任意字符;“?”符号表示一个任意字符;“^”符号表示取反;“[]”符号的意义与正则表达式一样;“{}”符号表示一组表达式的集合,值得注意的是,{}符号内的表达式是“或”的关系,例如ls {*.awk,*.sed} 的作用是列出当前目录下以.awk 或 .sed结尾的文件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |