跳到主要内容

re 模块

正则表达式是编程语言中用于搜索、匹配和操作文本的强大工具,Python 中的 re 模块提供了对正则表达式的支持。

任务

编写一个程序,接受一个电子邮件地址列表,并使用正则表达式提取每个地址的用户名和域名。

JavaScript 实现

const emailAddresses = [
"john.doe@example1.com",
"jane.smith@example2.com",
"foo@bar.com",
];

const regex = /([^@]+)@(.+)/;

emailAddresses.forEach((email) => {
const [_, username, domain] = email.match(regex);
console.log(`Username: ${username}, Domain: ${domain}`);
});

Python实现:

import re

email_addresses = [
"john.doe@example1.com",
"jane.smith@example2.com",
"foo@bar.com",
]

regex = re.compile(r"([^@]+)@(.+)")

for email in email_addresses:
match = regex.match(email)
if match:
username, domain = match.groups()
print(f"Username: {username}, Domain: {domain}")
提示

Python 中的字符串前面添加 r,表示不对字符串字面量进行转义。

代码解读

  • 在 JavaScript 中,使用 /.../new Regex(...)定义正则表达式,而在 Python 中,使用 re.compile() 函数创建正则表达式。

差异速览

特性JavaScriptPython
创建正则表达式const myReg = /pattern/;new Regex(pattern)my_regex = re.compile(r'pattern')
匹配正则表达式myReg.test(myStr)my_regex.match(my_str)
查找第一个匹配项myReg.exec(myStr)my_regex.search(my_str)
查找所有匹配项myStr.match(myReg)my_regex.findall(my_str)
替换匹配项myStr.replace(myReg, replacement)my_regex.sub(replacement, my_str)
使用正则表达式拆分字符串myStr.split(myReg)my_regex.split(my_str)
提示

除了使用 re.compile() 预先创建正则表达式外,你还可以直接使用 re 模块的 sub、'search' 等方法实现相同的功能,如:

import re

re.search(r'pattern', my_str)
re.split(r'pattern', my_str)

相关资源