导入re模块
import re
使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
正则表达式可以包含特殊字符和普通字符。大多数普通字符,如'A',, 'a'或者'0'是最简单的正则表达式; 他们只是匹配自己。您可以连接普通字符,因此last匹配字符串'last'。(在本节的其余部分中,我们将用this special style编写RE ,通常没有引号,并且用'in single quotes'匹配字符串。)
.
- (点。)在默认模式下,它匹配除换行符之外的任何字符。如果指定
DOTALL
标志,则匹配包括换行符在内的任何字符。
^
- (脱字符。)匹配字符串的开头,并且在
MULTILINE
模式下也会在每个换行符后立即匹配。
$
- 匹配字符串的结尾或在字符串末尾的换行符之前,并且在
MULTILINE
模式中也匹配换行符之前。foo
匹配'foo'和'foobar',而正则表达式foo$
只匹配'foo'。更有趣的是, 通常在'foo1\nfoo2\n'
中查找foo.$
匹配'foo2',但在MULTILINE
模式中匹配'foo1' ; 在'foo\n'
中查找单个$
将找到两个(空)匹配:一个在换行符之前,一个在字符串末尾。
*
- 使得到的RE匹配前面RE的0或更多次重复,尽可能多的重复。 ab*将匹配'a','ab'或'a'后面跟任意数量的'b'。
+
- 使得到的RE匹配前一个RE的1次或更多次重复。 ab+将匹配'a',后跟任何非零数字的'b'; 它不会只匹配'a'。
?
- 使得到的RE匹配前面RE的0或1次重复。 ab?将匹配'a'或'ab'。
*?,+?,??
- '','+'和'?'限定符都是贪婪的 ; 它们匹配尽可能多的文本。有时这种行为是不可取的; 如果RE <.>匹配'<a> b <c>',它将匹配整个字符串,而不仅仅是'<a>'。在限定符之后添加?使其以非贪婪或最小的方式执行匹配; 尽可能少的字符将匹配。使用RE<.*?>仅匹配'<a>'。
{m}
- 匹配前一个字符出现m次
{m,n}
- 匹配前一个字符出现从m到n次
|
- 匹配左右任意一个表达式
(ab)
- 将括号中字符作为一个分组
\num
- 引用分组num匹配到的字符串
(?P<name>)
- 分组起别名
(?P=name)
- 引用别名为name分组匹配到的字符串
\num的用法
ret = re.match('<(\w+)>\d+<\1>','<html>123456<html>')
ret = re.match(r'<(\w+)>\d+<\1>','<html>123456<html>')
print(ret.group(),ret.groups())
网友评论