» Python快速入门 » 3. 高级篇 » 3.4 正则表达式

正则表达式

正则表达式 (即 RE, or regex) 实质上是嵌入在 Python 中并通过 re 模块提供的一种微型、高度专业化的编程语言。

使用这种微型语言,你可以指定要匹配的可能字符串集的规则;此集合可能包含文本句子、电子邮件地址、号码或其他内容。 然后,你可以提出“此字符串是否与模式整体匹配?”或“此字符串中是否包含有模式的任何匹配?”等等之类问题。你还可以使用正则表达式修改字符串或以各种方式分割字符串。

查找所有匹配

import re

pattern = "ab"
content = "abcabcdbab"
results = re.findall(pattern, content)
print(results) # ['ab', 'ab', 'ab']

pattern = "[0-9_]+" # digit or underscore which occurs multiple times
content = "56abc789h__31"
results = re.findall(pattern, content)
print(results) # ['56', '789', '__31']

# ignore case
pattern = "ab"
content = "AbcabcdbaBB"
results = re.findall(pattern, content, re.IGNORECASE)
print(results) # ['Ab', 'ab', 'aB']

获取第一个匹配

import re

pattern = "[0-9_]+"
content = "56abc789h__31"
result = re.search(pattern, content)
print(result) # <re.Match object; span=(0, 2), match='56'>
print(result.group()) # 56

根据模式分割字符串

import re

pattern = "[0-9_]+"
content = "56abc789h__31hello"
segments = re.split(pattern, content)
print(segments) # ['', 'abc', 'h', 'hello']

根据模式替换子串

import re

pattern = "[0-9_]+"
content = "56abc789h__31hello"
result = re.sub(pattern, '***', content)
print(result) # ***abc***h***hello

代码挑战

尝试修改编辑器中的正则表达式模式,以提取所有的电话号码。

Loading...
> 此处输出代码运行结果
上页
下页