Python 中正则表达式 (regular expression) 的用法?

推荐答案

-- -------------------- ---- -------
------ --

- ---------
------- - ---------------------------------------------------
----- - ---------------------

-- ----------------- -------
    ------------ -------
-----
    -------------- -------

本题详细解读

正则表达式基础

正则表达式(Regular Expression,简称 regex)是一种用于匹配字符串的模式。Python 通过 re 模块提供了对正则表达式的支持。

常用函数

  1. re.match(pattern, string): 从字符串的起始位置匹配正则表达式,如果匹配成功返回一个匹配对象,否则返回 None
  2. re.search(pattern, string): 扫描整个字符串并返回第一个成功的匹配。
  3. re.findall(pattern, string): 返回字符串中所有与模式匹配的非重叠匹配项的列表。
  4. re.sub(pattern, repl, string): 替换字符串中所有匹配正则表达式的部分为 repl

常用元字符

  • .: 匹配任意单个字符(除了换行符)。
  • ^: 匹配字符串的开头。
  • $: 匹配字符串的结尾。
  • *: 匹配前面的字符零次或多次。
  • +: 匹配前面的字符一次或多次。
  • ?: 匹配前面的字符零次或一次。
  • {n}: 匹配前面的字符恰好 n 次。
  • {n,}: 匹配前面的字符至少 n 次。
  • {n,m}: 匹配前面的字符至少 n 次,至多 m 次。
  • []: 匹配括号内的任意一个字符。
  • |: 或操作,匹配 | 左边或右边的表达式。
  • (): 分组,捕获匹配的内容。

示例解析

-- -------------------- ---- -------
------ --

- ------------
------- - ---------------------------------------------------
----- - ---------------------

-- ----------------- -------
    ------------ -------
-----
    -------------- -------
  • ^[a-zA-Z0-9_.+-]+: 匹配邮箱的用户名部分,允许字母、数字、下划线、点、加号和减号。
  • @: 匹配邮箱地址中的 @ 符号。
  • [a-zA-Z0-9-]+: 匹配邮箱的域名部分,允许字母、数字和减号。
  • \.: 匹配域名中的点号。
  • [a-zA-Z0-9-.]+$: 匹配顶级域名部分,允许字母、数字、点和减号,并且匹配到字符串的结尾。

注意事项

  • 正则表达式中的特殊字符需要使用反斜杠 \ 进行转义。
  • re.match 只匹配字符串的开头,而 re.search 可以匹配字符串的任意位置。
  • 正则表达式的性能在处理大量数据时可能会受到影响,因此在实际应用中需要谨慎使用。
纠错
反馈