正则表达式初解
正则表达式(Regular Expression) 是很强大的对字符串检索,过滤,替换操作匹配的工具,在平时的工作中经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。正则表达式分为基础正则表达式,扩展正则表达式。下面简单介绍 ? ? 基础正则表达式 基础正则表达式可以按元字符来分类,至于什么是元字符先别管, 元字符可分为四类,字符匹配,次数匹配,位置匹配,分组 ? ?1? 字符匹配:以某些特定的符号来匹配某些出现不规律的字符 .? ? ? ??匹配任意单个字符数字字母换行符不行 []? ? 匹配方括号中的任意单个字符 如:[abcd]? 匹配a,b,c,d四个字符中的任意一个 [0-9]匹配任意数字一次? [a-z] 匹配任意字母一次 [^]?? 这个与上面的正好相反,匹配非方括号中的字符任意一次,如[^abcd] 匹配非a,d 以外的任意字符,表示取反 [:alnum:]? ? ? ? ? ? 匹配字母和数字 [A-Za-z0-9] [:alpha:] ? ? ?字母大小写字符,亦即 A-Z,a-z [:lower:] 小写字母? ? ??[:upper:]? ? ? ? ? ? ? ?大写字母? [:blank:] 空白字符(空格和制表符) [:space:] 水平和垂直的空白字符这个匹配包含[:blank:] [:cntrl:] ? 不可打印的控制字符(退格) [:digit:] ? 十进制数字? ? ?[0-9] [:xdigit:] 十六进制数字?? [:graph:] 可打印的非空白字符? [:print:]? ? ? ? ? ? ? ? ? ?可打印字符? [:punct:]? ? ? ? ? ? ? ? ? 标点符号? 2.次数匹配,上面介绍了以某个特定的符号或者标志来匹配字符,但是当往往需要处理的字符或者文本都很大,所以,次数匹配就很重要了。 猜到了吗? 没错,一样的次数匹配就是以某些特定的符号来代表字符出现的次数。如下 * ? 匹配前面的字符任意次,包括0次 但是它会尽可能多的匹配次数,称之为贪婪模式,所以需要注意。如.*可以匹配空行,也能匹配任意内容 ? ? ?匹配其前面的字符0或1次? +? ? ? ? ? ? ? 匹配其前面的字符至少1次? {n}? ? ? ? ?匹配前面的字符n次? ? ? {m,n} ? ? 匹配前面的字符至少m次,最多n次? {,n} 匹配前面的字符至多n次? {n,}? ? ? ? ? ? ? ? 匹配前面的字符至少n次? ? 2. 位置匹配,什么叫位置匹配,在处理的文件的过程中,我们很多时候无法确定他是第多少个字符,前面是什么后面是什么,我们只需关心的是开头和结尾 ^? ? 匹配行首 $? ? ?匹配行尾 以上两个可以组合可以匹配空行如:^$? 那么? ^[[:space:]]*$ 代表什么意思? 位置匹配还有 /< 与? />? ? 什么意思呢 ?? 如 /<a? 这个表示的是匹配a开头的单词? 反之? ?a/>匹配以a结尾的单词? 这就是单词位置匹配 需要注意的是数字下划线不算单词 /<? 与? />? ?可以用 /b来代替? ?/ba 与 a/b? &;word&; 就是匹配整个单词? 1.3.4 分组,讲一个或者多个字符分在一起合为一个整体,方便对它的引用 ()? ? ? ? ? ?如 (hello linox)? 这样就把两个字符串合成一个组,可以使用1 对他引用,如果有第二个组就使用2引用,以此类推, 当组当中包含组时,最外的组是第一个组? 如 (group1(group2))? 最外的组是1组但是他的内容是group1group2 ? |? ? ? ? ? ? 或者符号? 如? a|b 匹配a或者b 扩展正则表达式 扩展正则表达式是都基础正则表达式的延申,内容不多,但是很重要,是可以说是对基础正则的简化,因为扩展正则表达式很多特定的匹配不需要符号 扩展正则表达式的字符匹配与基础正则一样。 次数匹配
? ?* ? 匹配前面的字符任意次,包括0次 但是它会尽可能多的匹配次数,称之为贪婪模式,所以需要注意。如.*可以匹配空行,也能匹配任意内容 ? ? ?匹配其前面的字符0或1次? +? ? ? ? ? ? ? 匹配其前面的字符至少1次? {n}? ? ? ? ?匹配前面的字符n次? ? ? {m,n} ? ? 匹配前面的字符至少m次,最多n次? {,n} 匹配前面的字符至多n次? {n,}? ? ? ? ? ? ? ? 匹配前面的字符至少n次? 看到没有,扩展正则其实与基础正则一样,只是扩展正则不需要转义而已 总结:基础正则与扩展正则,但是在Linux系统中有些命令只可使用基础,又命令使用扩展,也有两者皆可。使用方式一样 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |