好久之前就想学一下正则表达式,虽然之前有过使用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 |
|