正则表达式(Regular Expressions,简称 regex 或 regexp)是一种强大的文本处理工具,它允许用户通过特定的模式来匹配、查找、替换或分割字符串。正则表达式广泛应用于编程、数据清洗、文本分析等领域,其灵活性和高效性使其成为处理文本数据的得力助手。
正则表达式的基础
字符匹配
正则表达式的基本功能是匹配字符。以下是一些基本的字符匹配规则:
- 普通字符:直接匹配字符本身。例如,
a
匹配字符a
。 .
(点号):匹配除换行符之外的任何单个字符。例如,.
匹配任意单个字符。\d
:匹配一个数字字符,等价于[0-9]
。\D
:匹配一个非数字字符,等价于[^0-9]
。\w
:匹配任意字母、数字或下划线字符,等价于[A-Za-z0-9_]
。\W
:匹配任意非字母、数字或下划线字符,等价于[^A-Za-z0-9_]
。\s
:匹配任意空白字符(包括空格、制表符、换行符等)。
字符集
字符集允许匹配一个或多个特定的字符。以下是一些字符集的示例:
[abc]
:匹配字符a
、b
或c
。[^abc]
:匹配除了a
、b
和c
之外的任意字符。[a-z]
:匹配从a
到z
的任意一个字符。[A-Z]
:匹配从A
到Z
的任意一个大写英文字母。[a-zA-Z]
:匹配任意一个英文字母。
重复匹配
重复匹配允许指定一个模式重复的次数。以下是一些重复匹配的示例:
*
:匹配前面的子表达式零次或多次。例如,a*
匹配空字符串或任意个a
。+
:匹配前面的子表达式一次或多次。例如,a+
匹配至少一个a
。?
:匹配前面的子表达式零次或一次。例如,do(es)?
可以匹配do
或does
。{n}
:匹配前面的子表达式恰好n
次。例如,a{2}
匹配两个a
。{n,}
:匹配前面的子表达式至少n
次。例如,a{2,}
匹配两个或更多的a
。
边界匹配
边界匹配用于指定模式必须出现在字符串的特定位置。以下是一些边界匹配的示例:
^
:匹配输入字符串的开始位置。$
:匹配输入字符串的结束位置。<
:匹配输入字符串的起始位置,但不包括起始位置上的字符。>
:匹配输入字符串的结束位置,但不包括结束位置上的字符。
分组与捕获
分组允许将正则表达式的一部分作为一个整体来匹配。以下是一些分组与捕获的示例:
()
:标记一个子表达式,用于分组匹配。例如,(\d{3})-(\d{2})-(\d{4})
将匹配电话号码。(?:...)
:非捕获分组,用于分组但不保存匹配结果。例如,(?:a|b)
匹配a
或b
,但不保存匹配结果。
特殊字符转义
在某些情况下,您可能需要匹配正则表达式中的特殊字符。以下是一些特殊字符的转义示例:
\
:转义特殊字符,使其被视为普通字符。例如,\.
匹配点号.
。\\
:转义反斜杠\
。
实例代码
以下是一些使用 Python 正则表达式的实例代码:
”`python import re
匹配电话号码
phone_pattern = r’(\d{3})-(\d{2})-(\d{4})’ phone_number = ‘123-45-6789’ match = re.match(phone_pattern, phone_number) if match:
print("匹配的电话号码:", match.group(0))
查找所有电子邮件地址
emailpattern = r’[a-zA-Z0-9.%+-]+@[a-zA-Z0-9.-]+