少女祈祷中...

1,正则表达式

正则表达式(Regular Expression,简称regex或regexp)是一种文本模式描述的方法,它用于对字符串进行搜索、匹配、替换等操作。正则表达式由普通字符(如字母和数字)以及特殊字符(称为“元字符”)组成。这些特殊字符赋予了正则表达式强大的文本处理能力,使其能够匹配复杂的文本模式。


2,含义

在正则表达式中,元字符具有特殊的含义,它们不表示字符本身的字面意义,而是表示一种操作或模式。例如:

字符 意义
. 匹配除换行符以外的任意单个字符。
^ 匹配字符串的开始位置。
$ 匹配字符串的结束位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
? 匹配前面的子表达式零次或一次。
{n} 匹配前面的子表达式恰好n次。
{n,} 匹配前面的子表达式至少n次。
{n,m} 匹配前面的子表达式至少n次,但不超过m次。
[] 表示字符集合,匹配方括号中的任意字符。例如,[abc]匹配abc
| 表示逻辑“或”操作,匹配左边或右边的表达式。
() 用于分组,可以将多个字符组合成一个整体进行匹配。分组后,可以使用\1\2等引用分组匹配的内容。
\ 用于转义字符,使其表示字面意义,或表示特殊字符的另一种含义。例如,\.匹配.字符本身。

3,示例

  1. a.c:匹配以a开头,以c结尾,中间有一个任意字符的字符串,如abca1c等。
  2. ^abc$:匹配完整的字符串abc
  3. ab+c:匹配以a开头,以c结尾,中间至少有一个b的字符串,如abcabbc等。
  4. a(bc)*d:匹配以a开头,以d结尾,中间可以有任意数量的bc组合的字符串,如adabcdabcbcd等。
  5. \d+:匹配一个或多个数字,\d是数字的简写。
  6. \w+:匹配一个或多个字母、数字或下划线,\w是字母、数字或下划线的简写。

在Python中,正则表达式通常通过re模块来使用。re模块提供了多种函数来执行正则表达式的匹配、搜索、替换等操作。例如:

  • re.match(pattern, string, flags=0):尝试从字符串的起始位置匹配正则表达式。
  • re.search(pattern, string, flags=0):扫描字符串,寻找第一个匹配正则表达式的子串。
  • re.findall(pattern, string, flags=0):找到所有匹配正则表达式的子串,并返回一个列表。
  • re.sub(pattern, repl, string, count=0, flags=0):使用repl替换字符串中所有与正则表达式pattern匹配的子串。

4,示示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import re

# 假设这是我们的文本内容,它包含了一些电子邮件地址
text = """
Hello, my email is test.email+example@leetcode.com.
You can also reach me at another.test_email@example.org.
But not at this-is-not-an-email.
Or this one: invalid-email@.com
Here is another valid one: good.email@sub.domain.example.com
"""

# 定义用于匹配电子邮件地址的正则表达式
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'

# 使用re.findall()函数找到所有匹配的电子邮件地址
emails = re.findall(email_pattern, text)

# 打印提取到的电子邮件地址
for email in emails:
print(email)

在这个例子中,正则表达式[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}被用来匹配电子邮件地址:

  • [a-zA-Z0-9._%+-]+:匹配电子邮件地址的本地部分(local-part),它包含字母、数字、点(.)、下划线(_)、百分号(%)、加号(+)和减号(-)。+表示前面的字符集合可以出现一次或多次。
  • @:字面意义上的@符号,用于分隔本地部分和域部分。
  • [a-zA-Z0-9.-]+:匹配电子邮件地址的域部分(domain),它包含字母、数字、点(.)和减号(-)。同样,+表示前面的字符集合可以出现一次或多次。
  • \.:转义字符,用于匹配字面上的点(.),因为在正则表达式中点是一个特殊字符,表示任意字符。
  • [a-zA-Z]{2,}:匹配顶级域名(TLD),它至少包含两个字母。

AI真好用