好久之前就想学一下正则表达式,虽然之前有过使用python写爬虫使用正则表达式的经历,但工作中不是使用的python,所以就忘记了好多正则表达式,现在回想起来还是需要看一下的毕竟正则表达式是那么的强大,那么的好用。首先来看一些特殊的表达式以及它们的意义:
| 表达式 | 意义 |
|---|---|
| . | ‘\n’以外所有的字符 |
| […] | …字符中任何一个 |
| [^…] | 非…字符中的任意一个 |
| [[:charclass:]] | 指定字符类charclass中的一个(见下表) |
| \n,\t,\f,\r,\v | 一个newline,tabulator,form feed,carriage return或vertical tab |
| \xhh,\uhhh | 一个十六进制字符或Unicode字符 |
| \d,\D,\s,\S,\w,\W | 某字符类内的一个字符shortcut(见下表) |
| * | 前一个字符或者group,任意次数 |
| ? | 前一个字符或者group,可有可无 |
| + | 前一个字符或者group,至少一次 |
| {n} | 前一个字符或者group, n次 |
| {m,n} | 前一个字符或者group,至少m次,最多n次 |
| …|… | 在 | 之前或者之后的pattern |
| (…) | 设定分组 |
| \1,\2,\3,… | 第n个 group |
| \b | 一个正字词的边界 |
| \B | 一个负字词的边界 |
| ^ | 一行的起点 |
| $ | 一行的终点 |
下表是正则表达式中的字符类:
| 字符类 | 缩写 | 转义字符 | 含义 |
|---|---|---|---|
| [[:alnum:]] | 一个字母或者数字 | ||
| [[:alpha:]] | 一个字母 | ||
| [[:blank:]] | 一个space或tab | ||
| [[:cntrl:]] | 一个控制字符 | ||
| [[:digit:]] | [[:d:]] | \d | 一个数字 |
| \D | 一个非数字 | ||
| [[:graph:]] | 可打印非空白字符 | ||
| [[:lower:]] | 小写数字 | ||
| [[:print:]] | 可打印字符包括空白字符 | ||
| [[:punct:]] | 一个标点符合字符 | ||
| [[:space:]] | [[:s:]] | \s | 一个空白字符 |
| \S | 一个非空白字符 | ||
| [[:upper:]] | 一个大写字母 | ||
| [[:xdigit:]] | 一个十六进制数字 | ||
| [[:w:]] | \w | 一个字母、数字或者下划线 | |
| \W | 非字母、数字或下划线 |
使用正则表达式主要用来查找和替换string中的字符。使用正则表达式可以完成以下工作:
Match : 用输入来对比某个正则表达式
Search : 查找与patter匹配的正则表达式
Tokenize : 将语法切分,取得词汇单元
Replace : 替换第一个或者所有与pattern匹配的。
现在就看看正则表达式匹配和查找接口。
实例代码如下:
1 |
|