1、普通字符
匹配规则:匹配相应的普通字符
e.g.
In [9]: re.findall("abc","abcksjdabclkjks")
Out[9]: ['abc', 'abc']
2、或:
元字符:ab | cd
匹配规则:匹配|两边任意一个正则表达式符合的情况
e.g.
In [11]: re.findall("ab|bc","abcdbdcabdcdbcdeabd")
Out[11]: ['ab', 'ab', 'bc', 'ab']
* | 两侧不要有没用的空格
3、匹配单一字符
元字符: .
匹配规则:匹配除了换行之外的任意字符
e.g.
In [13]: re.findall("f.o","foo is not fao is foo")
Out[13]: ['foo', 'fao', 'foo']
4、匹配开始位置
元字符: ^
匹配规则:匹配一个字符串的开始位置
e.g.
In [24]: re.findall("^hello","hello world hello")
Out[24]: ['hello']
5、匹配结束位置
元字符: $
匹配规则:匹配目标字符串的结束位置
e.g.
In [25]: re.findall("py$","hello.py")
Out[25]: ['py']
6、匹配重复:
元字符: *
匹配规则:匹配前面的正则表达式重复0次或多次
e.g.
In [26]: re.findall("fo*","fooofofofsadfo")
Out[26]: ['fooo', 'fo', 'fo', 'f', 'fo']
7、匹配重复
元字符: +
匹配规则:匹配前面的正则表达式重复1次或多次
e.g.
In [32]: re.findall(".+py$","hello.py")
Out[32]: ['hello.py']
8、匹配重复
元字符:?
匹配规则:匹配前面的正则表达式重复0次或1次
e.g.
In [36]: re.findall("ab?","helloabdacdefabc")
Out[36]: ['ab', 'a', 'ab']
9、匹配重复
元字符: {n}
匹配规则:匹配指定的重复次数
e.g.
In [15]: In [9]: re.findall("ab{3}","abbbbbbbb")
Out[15]: ['abbb']
10、匹配重复
元字符:{m,n}
匹配规则:匹配前面的正则表达式重复m次到n次
e.g.
In [20]: In [9]: re.findall("ab{2,5}","abbbbbbbbbbbbb")
Out[20]: ['abbbbb']
11、匹配字符集合
元字符:[]
匹配规则:匹配中括号范围内的任意一个字符
[A-Z]
[a-z]
[0-9]
[_0-9a-zA-Z]
e.g.
In [26]: In [9]: re.findall("[name]","what is your name")
Out[26]: ['a', 'n', 'a', 'm', 'e']
12、匹配字符集合
元字符:[^...]
匹配规则:匹配除指定字符集之外的任意字符
e.g.
In [33]: In [9]: re.findall("[^_0-9a-z]","what is your name,My name is Arry")
Out[33]: [' ', ' ', ' ', ',', 'M', ' ', ' ', ' ', 'A']
13、匹配任意(非)数字字符
元字符: \d (是) \D (非)
匹配规则:\d匹配任意数字字符 \d匹配任意非数字字符
e.g.
In [37]: In [9]: re.findall("\d","phone:14752957")
Out[37]: ['1', '4', '7', '5', '2', '9', '5', '7']
e.g.
In [36]: In [9]: re.findall("\D","phone:14752957")
Out[36]: ['p', 'h', 'o', 'n', 'e', ':']
e.g.
In [45]: In [9]: re.findall("14\d{5}","phone:14752957")
Out[45]: ['1475295']
14、匹配(非)普通字符(普通字符:数字字母下划线)
元字符: \w \W
匹配规则:\w 匹配任意一个普通字符 \W 匹配任意非普通字符
[_0-9a-zA-Z] [^_0-9a-zA-Z]
e.g.
In [50]: In [9]: re.findall("\w","hello shuge,zye_")
Out[50]: ['h', 'e', 'l', 'l', 'o', 's', 'h', 'u', 'g', 'e', 'z', 'y', 'e', '_']
e.g.
In [49]: In [9]: re.findall("\W","hello shuge,zye_")
Out[49]: [' ', ',']
15、匹配(非)空字符
元字符:\s \S
匹配规则:\s 匹配任意一个空字符 \S匹配任意非空字符
[\n\t\r\0]
e.g.
In [58]: In [9]: re.findall("\s","heLLO world\r\n\t")
Out[58]: [' ', '\r', '\n', '\t']
e.g.
In [54]: In [9]: re.findall("\S","heLLO world")
匹配规则:匹配相应的普通字符
e.g.
In [9]: re.findall("abc","abcksjdabclkjks")
Out[9]: ['abc', 'abc']
2、或:
元字符:ab | cd
匹配规则:匹配|两边任意一个正则表达式符合的情况
e.g.
In [11]: re.findall("ab|bc","abcdbdcabdcdbcdeabd")
Out[11]: ['ab', 'ab', 'bc', 'ab']
* | 两侧不要有没用的空格
3、匹配单一字符
元字符: .
匹配规则:匹配除了换行之外的任意字符
e.g.
In [13]: re.findall("f.o","foo is not fao is foo")
Out[13]: ['foo', 'fao', 'foo']
4、匹配开始位置
元字符: ^
匹配规则:匹配一个字符串的开始位置
e.g.
In [24]: re.findall("^hello","hello world hello")
Out[24]: ['hello']
5、匹配结束位置
元字符: $
匹配规则:匹配目标字符串的结束位置
e.g.
In [25]: re.findall("py$","hello.py")
Out[25]: ['py']
6、匹配重复:
元字符: *
匹配规则:匹配前面的正则表达式重复0次或多次
e.g.
In [26]: re.findall("fo*","fooofofofsadfo")
Out[26]: ['fooo', 'fo', 'fo', 'f', 'fo']
7、匹配重复
元字符: +
匹配规则:匹配前面的正则表达式重复1次或多次
e.g.
In [32]: re.findall(".+py$","hello.py")
Out[32]: ['hello.py']
8、匹配重复
元字符:?
匹配规则:匹配前面的正则表达式重复0次或1次
e.g.
In [36]: re.findall("ab?","helloabdacdefabc")
Out[36]: ['ab', 'a', 'ab']
9、匹配重复
元字符: {n}
匹配规则:匹配指定的重复次数
e.g.
In [15]: In [9]: re.findall("ab{3}","abbbbbbbb")
Out[15]: ['abbb']
10、匹配重复
元字符:{m,n}
匹配规则:匹配前面的正则表达式重复m次到n次
e.g.
In [20]: In [9]: re.findall("ab{2,5}","abbbbbbbbbbbbb")
Out[20]: ['abbbbb']
11、匹配字符集合
元字符:[]
匹配规则:匹配中括号范围内的任意一个字符
[A-Z]
[a-z]
[0-9]
[_0-9a-zA-Z]
e.g.
In [26]: In [9]: re.findall("[name]","what is your name")
Out[26]: ['a', 'n', 'a', 'm', 'e']
12、匹配字符集合
元字符:[^...]
匹配规则:匹配除指定字符集之外的任意字符
e.g.
In [33]: In [9]: re.findall("[^_0-9a-z]","what is your name,My name is Arry")
Out[33]: [' ', ' ', ' ', ',', 'M', ' ', ' ', ' ', 'A']
13、匹配任意(非)数字字符
元字符: \d (是) \D (非)
匹配规则:\d匹配任意数字字符 \d匹配任意非数字字符
e.g.
In [37]: In [9]: re.findall("\d","phone:14752957")
Out[37]: ['1', '4', '7', '5', '2', '9', '5', '7']
e.g.
In [36]: In [9]: re.findall("\D","phone:14752957")
Out[36]: ['p', 'h', 'o', 'n', 'e', ':']
e.g.
In [45]: In [9]: re.findall("14\d{5}","phone:14752957")
Out[45]: ['1475295']
14、匹配(非)普通字符(普通字符:数字字母下划线)
元字符: \w \W
匹配规则:\w 匹配任意一个普通字符 \W 匹配任意非普通字符
[_0-9a-zA-Z] [^_0-9a-zA-Z]
e.g.
In [50]: In [9]: re.findall("\w","hello shuge,zye_")
Out[50]: ['h', 'e', 'l', 'l', 'o', 's', 'h', 'u', 'g', 'e', 'z', 'y', 'e', '_']
e.g.
In [49]: In [9]: re.findall("\W","hello shuge,zye_")
Out[49]: [' ', ',']
15、匹配(非)空字符
元字符:\s \S
匹配规则:\s 匹配任意一个空字符 \S匹配任意非空字符
[\n\t\r\0]
e.g.
In [58]: In [9]: re.findall("\s","heLLO world\r\n\t")
Out[58]: [' ', '\r', '\n', '\t']
e.g.
In [54]: In [9]: re.findall("\S","heLLO world")
Out[54]: ['h', 'e', 'L', 'L', 'O', 'w', 'o', 'r', 'l', 'd']
16、匹配起止位置
元字符:\A \Z
匹配规则:\A 匹配开始位置 \Z匹配结束位置
^ $
绝对匹配 \Aabc\Z --->abc(且字符串只是abc)
17、匹配(非)单词边界位置
元字符:\b \B
匹配规则:\b匹配单词的边界 \B匹配非单词的边界
单词边界:数字字母下划线和其他字符的交接位置为单词的边界
abc$ abc_1 asa 两个单词边界
e.g.
In [78]: re.findall(r"\bis\b","This is a test")
Out[78]: ['is']