📜  正则表达式怎么写?(1)

📅  最后修改于: 2023-12-03 15:10:58.125000             🧑  作者: Mango

正则表达式怎么写?

正则表达式(Regular Expression,简称 RegEx)是一种用来匹配文本串的模式。通过构造一个包含特定语法的字符串,可以实现快速地匹配、查找、替换文本串。

语法

正则表达式的语法由各种字符和操作符组成,这些字符和操作符可以用来构造一个具体的匹配模式。下面是一些常用的语法:

  • 字符组:用方括号 [] 包含一组可能的字符。

    [aeiou]  # 匹配任意一个元音字母
    [0-9]    # 匹配任意一个数字
    [a-zA-Z] # 匹配任意一个字母
    
  • 元字符:具有特殊含义的字符。

    .    # 匹配任意一个字符
    \d   # 匹配任意一个数字
    \w   # 匹配任意一个单词字符,包括字母、数字和下划线
    \s   # 匹配任意一个空白字符,包括空格、制表符和换行符
    
  • 重复符号:用来指定匹配的次数。

    *    # 零次或多次
    +    # 一次或多次
    ?    # 零次或一次
    {3}  # 正好出现3次
    {3,} # 至少出现3次
    {3,5}# 出现3-5次
    
  • 边界符号:用来指定匹配的位置。

    ^    # 匹配字符串的开头
    $    # 匹配字符串的结尾
    \b   # 匹配单词边界
    
  • 分组符号:用来提取和捕获匹配的子串。

    ()            # 创建一个捕获组,用来提取匹配的子串
    (?:)          # 创建一个非捕获组,不用来提取匹配的子串
    (?<name>)     # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
    (?'name')     # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
    (?P<name>)    # 创建一个命名捕获组,用来提取匹配的子串,并用指定的名称命名
    
样例

下面是一个正则表达式的样例,它可以匹配一个合法的电子邮件地址:

import re

pattern = r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$'

email1 = 'example@mail.com'
email2 = 'example.2019@mail.com.cn'

print(re.match(pattern, email1))
print(re.match(pattern, email2))

结果如下:

<re.Match object; span=(0, 15), match='example@mail.com'>
<re.Match object; span=(0, 23), match='example.2019@mail.com.cn'>
总结

学会正则表达式可以帮助我们更高效地处理文本数据,可以用来解决搜索、替换、格式化等问题。虽然正则表达式的语法比较复杂,但只要掌握了基本的语法和操作符,就可以应对大部分情况。