Python正则表达式操作指南
September 10, 2014
- {"display_name"=>"JohnnySun", "login"=>"JohnnySun", "email"=>"bmy001@gmail.com", "url"=>"http://libdll.so"}
[caption id="attachment_61" align="alignnone" width="799"]<img class="size-full wp-image-61" src="http://www.bmysoft.org/wp-content/uploads/2014/09/pyre_ebb9ce1c-e5e8-4219-a8ae-7ee620d5f9f1.png" alt="Python 正则" width="799" height="1719" /></a> Python 正则[/caption]</p>
Step</td></p>
| Matched</td></p>
| Explanation</td>
</tr></p>
|
1</td></p>
| a</td></p>
| a 匹配模式</td>
</tr></p>
|
2</td></p>
| abcbd</td></p>
| 引擎匹配 [bcd]*,并尽其所能匹配到字符串的结尾</td>
</tr></p>
|
3</td></p>
| Failure</td></p>
| 引擎尝试匹配 b,但当前位置已经是字符的最後了,所以失败</td>
</tr></p>
|
4</td></p>
| abcb</td></p>
| 退回,[bcd]*尝试少匹配一个字符。</td>
</tr></p>
|
5</td></p>
| Failure</td></p>
| 再次尝次b,但在当前最後一位字符是"d"。</td>
</tr></p>
|
6</td></p>
| abc</td></p>
| 再次退回,[bcd]*只匹配 "bc"。</td>
</tr></p>
|
7</td></p>
| abcb</td></p>
| 再次尝试 b ,这次当前位上的字符正好是 "b"</td>
</tr>
</tbody>
</table>
</p>
方法/属性</td></p>
| 作用</td>
</tr></p>
|
match()</td></p>
| 决定 RE 是否在字符串刚开始的位置匹配</td>
</tr></p>
|
search()</td></p>
| 扫描字符串,找到这个 RE 匹配的位置</td>
</tr></p>
|
findall()</td></p>
| 找到 RE 匹配的所有子串,并把它们作为一个列表返回</td>
</tr></p>
|
finditer()</td></p>
| 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回</td>
</tr>
</tbody>
</table>
</p>
方法/属性</td></p>
| 作用</td>
</tr></p>
|
group()</td></p>
| 返回被 RE 匹配的字符串</td>
</tr></p>
|
start()</td></p>
| 返回匹配开始的位置</td>
</tr></p>
|
end()</td></p>
| 返回匹配结束的位置</td>
</tr></p>
|
span()</td></p>
| 返回一个元组包含匹配 (开始,结束) 的位置</td>
</tr>
</tbody>
</table>
编译标志
编译标志让你可以修改正则表达式的一些运行方式。在 re 模块中标志可以使用两个名字,一个是全名如 IGNORECASE,一个是缩写,一字母形式如 I。(如果你熟悉 Perl 的模式修改,一字母形式使用同样的字母;例如 re.VERBOSE的缩写形式是 re.X。)多个标志可以通过按位 OR-ing 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:</p>
标志</td></p>
| 含义</td>
</tr></p>
|
DOTALL, S</td></p>
| 使 . 匹配包括换行在内的所有字符</td>
</tr></p>
|
IGNORECASE, I</td></p>
| 使匹配对大小写不敏感</td>
</tr></p>
|
LOCALE, L</td></p>
| 做本地化识别(locale-aware)匹配</td>
</tr></p>
|
MULTILINE, M</td></p>
| 多行匹配,影响 ^ 和 $</td>
</tr></p>
|
VERBOSE, X</td></p>
| 能够使用 REs 的 verbose 状态,使之被组织得更清晰易懂</td>
</tr>
</tbody>
</table></p>
\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。
</pre>
</p>
| | | |