Quantcast
Channel: 小蓝博客
Viewing all articles
Browse latest Browse all 3145

正则表达式入门教程

$
0
0

正则表达式 (Regular Expressions, 简称re) 入门

正则表达式是一种用于匹配字符串模式的工具,被广泛应用于文本处理和数据提取。它通过一种紧凑的语法表达字符串的特定模式,用于搜索、替换、分割等操作。Python中的 re 模块提供了对正则表达式的支持,是文本处理的强大工具。

1. 基本概念

正则表达式由字符和元字符组成。字符代表它们自身,而元字符则具有特殊意义,用于构建复杂的模式。

  • 普通字符:匹配自身,如 a匹配字符 a
  • 元字符:具有特殊功能的字符,如 .*+?^$ 等。

2. 常用元字符及其含义

  • .:匹配任意单个字符(除换行符)。
  • ^:匹配字符串的开始位置。
  • $:匹配字符串的结束位置。
  • *:匹配前一个字符0次或多次。
  • +:匹配前一个字符1次或多次。
  • ?:匹配前一个字符0次或1次。
  • {n}:精确匹配n次。
  • {n,m}:匹配n到m次。
  • []:匹配括号内的任意字符,如 [abc]匹配 abc
  • |:表示或,如 a|b表示匹配 ab
  • ():分组,捕获子表达式。

3. 常见用法

以下是 Python 中使用 re 模块的常见操作:

  1. 匹配字符串

    import re
    pattern = r"\d+"  # 匹配一个或多个数字
    text = "The year is 2023."
    match = re.search(pattern, text)
    if match:
        print(match.group())  # 输出 2023

    re.search() 函数用于在字符串中查找匹配的第一个位置。

  2. 替换字符串

    text = "The price is 100 dollars."
    new_text = re.sub(r"\d+", "200", text)
    print(new_text)  # 输出 "The price is 200 dollars."

    re.sub() 用于替换匹配到的子字符串。

  3. 分割字符串

    text = "apple, orange; banana"
    fruits = re.split(r"[;,\s]+", text)
    print(fruits)  # 输出 ['apple', 'orange', 'banana']

    re.split() 根据正则表达式分割字符串。

  4. 查找所有匹配

    text = "Call 911 or 112 in emergency."
    numbers = re.findall(r"\d+", text)
    print(numbers)  # 输出 ['911', '112']

    re.findall() 返回字符串中所有与正则表达式匹配的部分。

4. 贪婪与懒惰匹配

正则表达式中的量词(如 *, +, ?)默认是贪婪的,即它们会尽可能多地匹配字符。如果希望它们变为懒惰匹配,可以在量词后加上 ?

  • 贪婪匹配.* 会尽可能多地匹配字符。
  • 懒惰匹配.*? 会尽可能少地匹配字符。

总结

正则表达式是一种强大的文本处理工具,通过学习基本的元字符、常用方法和匹配规则,开发者可以高效处理各种字符串操作需求。掌握正则表达式的基础,将为数据处理、日志分析、Web开发等领域提供极大的帮助。


Viewing all articles
Browse latest Browse all 3145

Trending Articles