[关闭]
@myles 2017-04-14T00:29:48.000000Z 字数 2021 阅读 906

re 课堂练习笔记

python正则匹配

1. 字符串之属性方法查找练习

>>> str1 = 'imooc python'

>>> str1.find
>>> str1.startswith
>>> str1.endswith

2. 正则匹配编译查找练习

>>> regex = re.compile(r'imooc') #将正则编译为一个re对象;
>>> match = regex.match(str1) #然后使用re.match的match方法进行正则匹配的查找

>>> match.group(0)
>>> match.groups
>>> match.span

3. re 常用操作符练习

3.1 单字符串匹配操作符

3.1.1 “单字符串”操作符表格

操作符 说明 实例
. 表示任何单个字符串匹配(除了\n)
[] 字符集:即对单个字符的匹配给出取值范围 [abc]表示a、b、c,[a-z]表示a-z单个字符
[^] 非字符集:单字符串“字符集”取反,对单个字符给出排除范围 [^abc]表示除a、b、c以外,可匹配任何单字符
\d/\D 匹配数字(等同[0-9])/匹配非数字
\w/\W 匹配单个单词字符[a-zA-Z0-9]/非单词字符匹配
\s/\S 匹配空白/非空白匹配

3.1.2 “单字符串”字符集实操演练

  1. [abc]单字符匹配字符串'a'

    >>> match = re.match(r'{[abc]}','{a}')
    >>> match.group(0)

  2. [abc]单字符匹配字符串'd'失败

    >>> match = re.match(r'{[abc]}','{d}')
    >>> match.group(0)

  3. [a-z]单字符字符串'd'

    >>> match = re.match(r'{[a-z]}','{d}')
    >>> match.group(0)

  4. [a-zA-Z]单字符匹配字符串'D'

    >>> match = re.match(r'{[a-zA-Z]}','{D}')
    >>> match.group(0)

  5. [a-zA-Z0-9]单字符匹配字符串'0'

    >>> match = re.match(r'{[a-zA-Z0-9]}','{0}')
    >>> match.group(0)

  6. [\w]单字符匹配字符串'0'

    >>> match = re.match(r'[\w]','{0}')
    >>> match.group(0)

  7. [\w]单字符匹配字符串' '失败

    >>> match = re.match(r'{[\w]}','{ }')
    >>> match.group(0)

  8. [\W]单字符匹配字符串' '

    >>> match = re.match(r'{[\W]}','{ }')
    >>> match.group(0)

3.1.3 “单字符串” . 实操演练

1.单个字符串'0'的匹配

>>> match = re.match(r'.','0')
>>> match.group(0)
'0'

2.任意字符的匹配

>>> match = re.match(r'.*','asdf-34-*23-')
>>> match.group(0)
'asdf-34-*23-'

3.2 多字符串匹配操作符

3.2.1 “多字符串”操作符表格

操作符 说明 实例
? 表示匹配前一个字符0次或者1次 abc? 表示可匹配ab、abc
+ 表示匹配前一个字符至少1次 abc+ 表示可匹配abc、abcc、abccc、abcccc等
* 表示匹配前一个字符0次或0次以上 abc* 表示可匹配ab、abc、abcc、abccc、abcccc等
{m} 表示匹配前一个字符m次 ab{2}c 表示匹配 abbc
{m,n} 表示匹配前一个字符m到n次 ab{2,3}c 表示匹配abbc、abbbc

3.2.2 “多字符串”实操演练

1.整数匹配

>>> match = re.match(r'-?\d*','-34234')
>>> match.group(0)
'-34234'
#以上正则匹配正确

>>> match = re.match(r'-?\d*','012039')
>>> match.group(0)
'012039'
#以上正则匹配错误,因为0开头的数字不是整数

修改正则,重新运行匹配
>>> match = re.match(r'-?[1-9]\d*','012039')
>>> type(match)
<class 'NoneType'>
>>> match.group(0)
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
match.group(0)
AttributeError: 'NoneType' object has no attribute 'group'

3.3 分组字符串匹配操作符

3.3.1 “多字符串”操作符表格

操作符 说明 实例
| 匹配左右任意一个字符串 123
( ) 分组标记,内部职能使用\ 操作符

3.4 边界操作符

3.4.1 边界操作符表格

操作符 说明 实例
^ 匹配字符串开头 ^abc 表示匹配一个以abc为开头的字符串
$ 匹配字符串结尾 @imooc.com$ 表示一个以@imooc.com为结尾的字符串;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注