1.
下面看下正则表达式 \w \s \d \b(注:下划线貌似会在[]里面失效)
. 匹配除换行符以外的任意字符
| 或的意思(aa)|(b),匹配aa或者b
\w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。(注:\w能不能匹配汉字要视你的操作系统和你的应用环境而定)
\s 匹配任意的空白符(或者是直接用‘ ’空格代替,一个空格代表一个空格,不能代表多个)
\d 匹配数字
\b 匹配单词的开始或结束
2.
正则字符 | 释义 | 举例 |
+ | 前面元素至少出现一次 | ab+:ab、abbbb 等 |
* | 前面元素出现0次或多次(贪婪) | ab*:a、ab、abb 等 |
? | 匹配前面的一次或0次(找到一次后,之后不再找了) | Ab?: A、Ab 等 |
^ | 作为开始标记(在[]里面是'非'的意思) | ^a:abc、aaaaaa等 |
$ | 作为结束标记 | c$:abc、cccc 等 |
\d | 数字 | 3、4、9 等 |
\D | 非数字 | A、a、- 等 |
[a-z] | a到z之间的任意字母 | a、p、m 等 |
[0-9] | 0到9之间的任意数字 | 0、2、9 等 |
3.
括号能提取字符串,如(com|cn|net)就可以限制,只能是com或cn或net。
括号将括号里面的内容作为一组,这就是与[]不同的地方。
方括号[] : 方括号是单个匹配,如[abc]他限制的不是abc连续出现,而是只能是其中一个,这样写那么规则就是找到这个位置时只能是a或是b或是c;
方括号是正则表达式中最常用的,常用的用法有:[a-zA-Z0-9]匹配所有英文字母和数字,[^a-zA-Z0-9]匹配所有非英文字母和数字。
大括号{}: 大括号的用法很简单,就是匹配次数,它需要和其他有意义的正则表达式一起使用。
比如[a-c]{2}意思就是匹配a-c之间的字母连续(可以是ac,bc)出现两次(如果连续出现3次,只找到2个就不找了);
比如(com){1}意思就是com必须出现一次
比如\W{1,3}意思就是非字母数字最少出现一次最多出现3次。
4.
*?, +?, ??
'*'、'+'和'?'限定符是贪婪的; 它们匹配尽可能多的文本。有时这个行为不是想要的;如果用正则表达式<.*>来匹配'<H1>title</H1>',它将匹配完整的字符串,而不会只是'<H1>'。在限定符之后加上'?'将使得匹配以非贪婪的或最小的方式进行;因为它将匹配尽可能少的字符。在刚才的表达式中使用.*?将只匹配'<H1>'。
- .* 匹配任意字符串,贪婪的
- .*? 非贪婪的匹配任意字符串
5.关于compile(),search(),match()函数
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
使用样例:
ch_regx = re.compile('0000,0000,0000,,(.*?)\\\N',re.S) ch_data = re.findall(ch_regx,content)[0].replace("-","")
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
参数说明:
函数参数说明:
参数 描述 pattern 匹配的正则表达式 string 要匹配的字符串。 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
re.match函数:
match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法: re.match(pattern, string, flags=0)
匹配结果:re.match匹配成功会返回一个对象,否则返回None。
用group(num=0)或groups()来获取匹配的结果
re.search函数:
扫描整个字符串并返回第一个成功的匹配。
函数语法:re.search(pattern, string, flags=0)
参数如上
匹配结果:如果匹配成功则返回一个匹配的对象,否则返回None。
用group(num=0)或groups()来获取匹配的结果。
re.findall函数:
扫描整个字符串,然后把匹配到的内容以列表的形式返回。
函数语法:re.search(pattern, string, flags=0)
正则表达式修饰符-可选标志:
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。
多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
修饰符 描述 re.I 使匹配对大小写不敏感 re.L 做本地化识别(locale-aware)匹配 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。