-
Notifications
You must be signed in to change notification settings - Fork 419
Expand file tree
/
Copy pathpython.regular.html
More file actions
137 lines (105 loc) · 7.29 KB
/
Copy pathpython.regular.html
File metadata and controls
137 lines (105 loc) · 7.29 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>1.11. 正则处理字符串</title><link rel="stylesheet" type="text/css" href="../docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="php,pear,pecl,phar, python, , " /><link rel="home" href="../index.html" title="Netkiller Python 手札" /><link rel="up" href="index.html" title="第 1 章 Python 入门" /><link rel="prev" href="class.html" title="1.10. Class" /><link rel="next" href="ch01s12.html" title="1.12. 循环" /></head><body><a xmlns="" href="//www.netkiller.cn/">Home</a> | <a xmlns="" href="//netkiller.github.io/">简体中文</a> | <a xmlns="" href="http://netkiller.sourceforge.net/">繁体中文</a> | <a xmlns="" href="/journal/index.html">杂文</a>
| <a xmlns="" href="https://github.com/netkiller">Github</a> | <a xmlns="" href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a> | <a xmlns="" href="https://www.facebook.com/bg7nyt">Facebook</a> | <a xmlns="" href="http://cn.linkedin.com/in/netkiller/">Linkedin</a> | <a xmlns="" href="https://www.youtube.com/user/bg7nyt/videos">Youtube</a> | <a xmlns="" href="//www.netkiller.cn/home/donations.html">打赏(Donations)</a> | <a xmlns="" href="//www.netkiller.cn/home/about.html">About</a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.11. 正则处理字符串</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="class.html">上一页</a> </td><th width="60%" align="center">第 1 章 Python 入门</th><td width="20%" align="right"> <a accesskey="n" href="ch01s12.html">下一页</a></td></tr></table><hr /></div><table xmlns=""><tr><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=fork&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&type=follow&count=true&size=large" height="30" width="240" frameborder="0" scrolling="0" style="width:240px; height: 30px;" allowTransparency="true"></iframe></td><td></td><td><a href="https://zhuanlan.zhihu.com/netkiller"><img src="/images/logo/zhihu-card-default.svg" height="25" /></a></td><td valign="middle"><a href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a></td><td></td><td></td><td></td><td></td></tr></table><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="python.regular"></a>1.11. 正则处理字符串</h2></div></div></div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="id905"></a>1.11.1. 正则替换</h3></div></div></div>
<pre class="screen">
import re
string = "TMP AAAAAA\r\nMSG BBBB"
print(re.sub(r'(TMP|MSG)\s', "", string))
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="id906"></a>1.11.2. match</h3></div></div></div>
<pre class="programlisting">
#!/usr/bin/python
import re
string = "/aaa/bbb/ccc"
match = re.match(r"/aaa/bbb/(.*)", string)
print(match)
print(match.span())
print(match.string)
print(match.group())
print(match.group(1))
print(match.groups())
print(match.groupdict())
</pre>
<p>输出</p>
<pre class="screen">
<re.Match object; span=(0, 12), match='/aaa/bbb/ccc'>
(0, 12)
/aaa/bbb/ccc
/aaa/bbb/ccc
ccc
('ccc',)
{}
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="id907"></a>1.11.3. 正则查找</h3></div></div></div>
<pre class="programlisting">
#!/usr/bin/python
import re
regular = "打开|关闭|结束|暂停"
question = "打开电灯,然后关闭"
pattern = re.compile(regular)
result = pattern.findall(question)
print(result)
</pre>
<pre class="programlisting">
#!/usr/bin/python
import re
regular = "(打开|播放)圣经第(.+)卷第(.*)章"
question = "打开圣经第三卷第二章"
pattern = re.compile(regular)
result = pattern.findall(question)
print(result)
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="id908"></a>1.11.4. 正则匹配后返回字典</h3></div></div></div>
<pre class="programlisting">
#!/usr/bin/python
import re
m = re.match(r"(?P<firstname>\w+) (?P<lastname>\w+)", "Neo Chen")
print(m.group("firstname"), m.group("lastname"))
</pre>
<p></p>
<pre class="programlisting">
>>> match = re.search(r'(foo)?(bar)?', 'foo')
>>> match and match.groups()[1]
None
>>> match = re.search(r'(foo)?(bar)?', 'foobar')
>>> match and match.groups()[1]
'bar'
match = re.search(r'(?P<foo>foo)?(?P<bar>bar)?', 'foo')
match and match.groupdict().get('bar')
match = re.search(r'(?P<foo>foo)?(?P<bar>bar)?', 'foobar')
match and match.groupdict().get('bar')
</pre>
</div>
</div><script xmlns="" type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=r5HG&d=9mi5r_kkDC8uxG8HuY3p4-2qgeeVypAK9vMD-2P6BYM"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch01s12.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">1.10. Class </td><td width="20%" align="center"><a accesskey="h" href="../index.html">起始页</a></td><td width="40%" align="right" valign="top"> 1.12. 循环</td></tr></table></div><script xmlns="">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-11694057-1', 'auto');
ga('send', 'pageview');
</script><script xmlns="" async="async">
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?93967759a51cda79e49bf4e34d0b0f2c";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script xmlns="" async="async">
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script></body></html>