Python3正则表达式第一课

                                                            正则表达式(第一课)

定义:即高级文本匹配模式,提供了搜索,替代等功能。本质是由一系列特殊符号和字符组成的字符串,

        这个字符串即是正则表达式。这个表达式描述了字符和字符的重复行为,可以匹配一类特征的字符串。

        白话一点,正则表达式就是用一个特殊的字符串,对文本文档进行搜索和替换,优点类似于文本文档的    查询功能。只不过这个特殊的字符串是由一系列的特殊符号和字符组成的

下面来说说在python中正则表达式的使用

Python3 中用 re模块 处理正则表达式

re.findall(pattern,string)

    功能 : 使用正则表达式匹配字符串
    参数 :  pattern 正则表达式
                  string  目标字符串

    返回值 : 一个列表  匹配到的所有内容

     注 意:匹配不到则返回一个空列表 []

    元字符 (即正则表达式中有特殊含义的符号)

首先在交互模式下 import re

1. 普通字符
元字符 : abc
匹配规则 : 匹配相应的普通字符
>>> re.findall("abc","abcdefghabcdhig")
 ['abc', 'abc']
注意:匹配不到则返回一个空列表 []
2. 或 |
元字符 :  ab|cd
匹配规则 : 匹配"|"两边任意一个正则表达式符合的情况
>>> re.findall("ab|cd","abcdefghabcdhcdigab")
['ab', 'cd', 'ab', 'cd', 'cd', 'ab']

注意: "|"两侧不要有没用的空格

3. 匹配单一字符
元字符 :  .
匹配规则: 匹配除了换行之外的任意字符
>>>re.findall("f.o", "foo is not fao fo foob f@o")

['foo', 'fao', 'foo', 'f@o']

4. 匹配开始位置
元字符: ^
匹配规则: 匹配一个字符串的开始位置
>>> re.findall("^hello","hello world")

['hello']

5. 匹配结束位置
元字符: $
匹配规则:匹配目标字符串的结束位置
>>>re.findall("py$","hello.py")

['py']

6. 匹配重复
元字符 :  *
匹配规则: 匹配前面的正则表达式重复0次或多次
>>> re.findall("ab*","abbcdabbbbbefab")

['abb', 'abbbbb', 'ab']

7. 匹配重复
元字符 :  + 

匹配规则: 匹配前面的正则表达式重复1次或多次

>>> re.findall("b+","abbcdabbbbbefab")
['bb', 'bbbbb', 'b']

8. 匹配重复
元字符:   ?
匹配规则: 匹配前面的正则表达式重复0次或1次
ab? -->   a   ab
>>> re.findall("ab?","abcdefa")
 ['ab', 'a']

9. 匹配重复
元字符:  {n}
匹配规则 : 匹配指定的重复次数
ab{3} --->  abbb
>>> re.findall("ab{3}","abbbbbbbb")
['abbb']

10. 匹配重复
元字符 :  {m,n}
匹配规则 : 匹配前面的正则表达式重复 m次 到 n次
ab{3,5}  abbb  abbbb abbbbb
>>>re.findall("ab{2,5}","abcdabbbabbbbbb")

 ['abbb', 'abbbbb']

11. 匹配字符集合
元字符:  []
匹配规则 :  匹配括号范围内的任意一个字符
[abc123d]  a b c 1 2 3 d
[a-z]  
[A-Z]
[0-9]
[123a-zA-Z]
>>>re.findall("[_0-9a-zA-Z]","Hello world 123")
['H', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd', '1', '2', '3']

12. 匹配字符集合
元字符: [^...]
匹配规则 : 匹配除指定字符集之外的任意字符
>>> re.findall("[^abc]","nihao abc")
['n', 'i', 'h', 'o', ' ']

13. 匹配任意(非)数字字符
元字符:  \d    \D
匹配规则 : \d 匹配任意数字字符   \D  匹配任意非数字字符
>>> re.findall("1\d{10}","17611665537")
['17611665537']

14. 匹配(非)普通字符  (普通字符: 数字字母下划线)
元字符 : \w            \W

匹配规则:  \w   匹配任意一个普通字符------ [_0-9a-zA-Z] 

                  \W  匹配任意非普通字符 -----  [^_0-9a-zA-Z]        

>>> re.findall("\w+","hello$1")
 ['hello', '1']
>>> re.findall("\W+","hello$1")
 ['$']

15. 匹配(非)空字符
元字符 :  \s      \S
匹配规则:\s 匹配任意空字符    \S 匹配任意非空字符----- [ \n\t\r]

I>>> re.findall("\s",'hello world\r\n\t\0')

 [' ', '\r', '\n', '\t']

16. 匹配起止位置
元字符:   \A     \Z
匹配规则 : \A匹配开始位置    \Z匹配结束位置
绝对匹配  \Aabc\Z  ----> abc (且字符串只是abc)
>>>  re.findall("\A/\w+/\w+\Z",'/football/zhongchao')

['/football/zhongchao']

分开理解\A/\w+/\w+\Z

\A     匹配开始位置

/ ----------后面字符串里的 /

\w+    任意一个或多个普通字符

/ ----------后面字符串里的 /

\w+    任意一个或多个普通字符

 \Z      匹配结束位置

注意:这里的几个斜杠和反斜杠不太好理解容易混淆,

建议自己用笔在纸上划画

17. 匹配(非)单词边界位置
元字符: \b     \B
匹配规则 : \b 匹配单词的边界    \B匹配非单词的边界
单词边界 : 数字字母下划线和其他字符的交界位置为单词的边界
>>> re.findall(r"\Bis\b",'This is a test')
 ['is']

    

猜你喜欢

转载自blog.csdn.net/dayu_luoyouyan/article/details/80542517
今日推荐