十一 正则表达式
Posted 钟桂耀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十一 正则表达式相关的知识,希望对你有一定的参考价值。
Regular Express:正则表达式
使用"一串符号"来描述有共同属性的数据
grep命令行简介
类型 注释
grep 标准grep命令,支持基本正则表达式
egrep 扩展grep命令,支持基本和扩展正则表达式
fgrep 快速grep命令,不支持正则表达式,按照字符串的字面意思进行匹配
grep处理数据顺序
以行为处理单位
对数据进行逐行处理,处理完当前行自动处理下一行,自动处理完所有的行为
默认输出有与正则表达式匹配数据的行,到屏幕上
不加选项,按默认方式处理数据
处理完当前行后,自动处理下一行,直到末行
egrep文本过滤
egrep [选项] ‘正则表达式‘ 文件 前置命令 | egrep [选项] ‘正则表达式‘ egrep等于 grep -E。表示允许使用扩展的正则表达式
常用的命令选项:
参数选项 注释 -i 忽略字母大小写 -v 条件取反 -c 统计匹配的行数 -q 静默、无任何输出,一般用于检测;看$?返回值,如果为0,说明有匹配,否则无匹配 -n 显示出匹配结果所在的行数 --color 标红显示匹配字串
基本元字符
类型 含义 举例 说明 ^ 匹配行首 ^abc 以abc开头 ^# 以#号开头的行(比如注释行) $ 匹配行尾 abc$ 以abc结尾的行 ^$ 空行 . 匹配单个字符 . 除换行符(\n)以外的任意单个字符 ? 最多匹配一次 * 匹配前面一个普通字符的任意次数 a* 0个或多个连续的a (abc)* 0个或多个连续的abc .* 任意长度的任意字符串 + 最少匹配一次 a+ 一个或多个连续的a (abc)+ 一个或多个连续的abc
元字符{}:限定表达式的匹配次数
类型 含义 示例 说明 {n} 匹配n次 (ab){3} 匹配ababab {n,m} 匹配n-m次 (ab){1,3} 匹配ab、abab、ababab {n,} 匹配至少n次 (ab){2} 匹配2个及以上连续的ab
元字符[]
匹配字符集合 []内加^可取反;"^"符号表示匹配行首,但是“^”符号放到"[]"符号中就不再是匹配行首,而是表示取反
示例 |
说明 |
[acl45_?] |
匹配a、c、l、4、5、_、? |
[a-z] |
匹配任意小写字母 |
[A-Z] |
匹配任意大写字母 |
[0-9] |
匹配任意数字 |
[a-Z0-9] |
匹配任意字母或数字 |
[^A-Z] |
匹配包括非大写字母的行 |
^[^a-z] |
匹配不以小写字母开头的行 |
[m~n] |
匹配m和n |
[:space:] |
空白字符 |
[:punct:] |
标点符号 |
[:lower:] |
小写字母 |
[:upper:] |
大写字母 |
[:alpha:] |
大小写字母 |
[:digit:] |
数字 |
[:alnum:] |
数字和大小写字母 |
其他元字符
类型 含义 示例 说明 () 组合为整体 ab{3} 匹配ab、abb、abbb (ab){3} 匹配ab、abab、ababab | 或者 root|bin 匹配root、bin \b 单词边界 \broot\b 匹配单词root,不匹配keroot、rooty等字符串 \< 单词的开头 \<th 匹配以th开头的单词 \> 单词的结束 \<root\> 作用与\broot\b相同
\为转义符号,可以为一些普通字符赋予特殊含义,或者将一些特殊字符变为普通字符
\<\>:精确匹配符号,该符号利用"\"符号屏蔽"<>"符号,如\<the\>表示精确匹配the这个单词,而不匹配the字符的单词
()通常和|符号结合使用,表示一组可选字符的集合
以上是关于十一 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
通过 Java 正则表达式提取 semver 版本字符串的片段
偷学Python第三十一天:Python正则表达式的语法以及re模块的使用