工作当中,我们经常会遇到从海量数据提取出有效信息的场景,例如:日志里查找关键信息、批量清洗数据、数据格式批量转换等。
在数据处理过程中,我们通常会使用常见的grep、sed、awk等命令,这个时候,如果结合起正则表达式,往往会使得脚本更为高效,适用场景更加广泛。
可以做什么
正则表达式
,可以认为是一个字符串表述公式,表述了一类符合描述语法规则的字符串。通过正则表达式,可以检查一个字符串是否包含某种子串、从字符串中提取某类子串、或者替换字符串中的某类子串。
正则表达式是一种标准化的语法表述,很多语言支持正则表达式的解析,例如java、JavaScript、shell等等。
语法描述
正则表达式主要有普通字符和特殊字符(元字符)构成。特殊字符在正则中有着特殊的作用,如果想要匹配特殊字符本身,需要通过‘\’进行转义。
接下来我们介绍一下常见的一些使用场景及其正则表述方式。
字符集
如果我们要查找一些特定的字符集合,就可以用如下方式表示:
表述 | 含义 |
---|---|
[ABCD] |
匹配[...]里的任意一个字符 |
[A-Z] |
区间范围,表示匹配大写字符A到Z的所有字符。类似的包括[a-z],[0-9]等。 |
[^ABCD] |
匹配除了括号内的所有其他字符。 |
特殊字符 |
\w 代表字母+数字+下划线;\s 代表空白符;\S 所有非空白符(包括换行);. 代表除换行符的任意单个字符 |
限定符
用来表示前边的描述组件需要匹配的次数,限定符一共包括以下几种:
表述 | 含义 |
---|---|
* |
匹配前边的子表达式 0 到 多 次。 |
+ |
匹配前边的 1 到 多 次。 |
? |
匹配前边的 0 到1 次。 (所谓的非贪婪匹配) |
{n} , {n, } , {n, m}
|
分别代表匹配 n次、匹配至少n次,匹配 n到m 次 |
定位符
表述 | 含义 |
---|---|
^ |
匹配字符开头 |
$ |
匹配字符串结尾 |
网友评论