正則表達式
丹丹

re用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import re

def re_all(regex):
log = 'Thu Mar 14 19:27:38 1991::jvfcho@iwrptlqmyok.edu::668950058-6-11\n'
print(log)
print("")

print("===返回匹配的字符串(re.search().group())===")
print(re.search(regex,log).group())
print("")

print("===列表返回匹配的所有子串(re.findall())===")
print(re.findall(regex,log))
print("")

print("===返回匹配开始的位置(re.search().start())===")
print(re.search(regex,log).start())
print("")

print("===返回匹配结束的位置(re.search().end())===")
print(re.search(regex,log).end())
print("")

print("===返回匹配位置(re.search().span())===")
print(re.search(regex,log).span())
print("")

匹配

1
2
regex = '(Mon|Tue|Wed|Thu|Fri|Sat|Sun)'  # |是or
re_all(regex)
Thu Mar 14 19:27:38 1991::jvfcho@iwrptlqmyok.edu::668950058-6-11


===返回匹配的字符串(re.search().group())===
Thu

===列表返回匹配的所有子串(re.findall())===
['Thu']

===返回匹配开始的位置(re.search().start())===
0

===返回匹配结束的位置(re.search().end())===
3

===返回匹配位置(re.search().span())===
(0, 3)
1
2
regex = '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).'  # ()是子組,會依次返回; {}是幾個; *是無數個
re_all(regex)
Thu Mar 14 19:27:38 1991::jvfcho@iwrptlqmyok.edu::668950058-6-11


===返回匹配的字符串(re.search().group())===
19:27:38 

===列表返回匹配的所有子串(re.findall())===
[('19', '27', '38')]

===返回匹配开始的位置(re.search().start())===
11

===返回匹配结束的位置(re.search().end())===
20

===返回匹配位置(re.search().span())===
(11, 20)
1
2
regex = '([a-z]*)@([a-z]*).(com|edu|net|org|gov)'
re_all(regex)
Thu Mar 14 19:27:38 1991::jvfcho@iwrptlqmyok.edu::668950058-6-11


===返回匹配的字符串(re.search().group())===
jvfcho@iwrptlqmyok.edu

===列表返回匹配的所有子串(re.findall())===
[('jvfcho', 'iwrptlqmyok', 'edu')]

===返回匹配开始的位置(re.search().start())===
26

===返回匹配结束的位置(re.search().end())===
48

===返回匹配位置(re.search().span())===
(26, 48)

参考:

  1. 陈乾博客
  2. qiuri2008博客