大家好,我是赛博红兔!上一集我们看一下有哪些元字符,然后来学习一下怎么写正则表达式。简单来说,正则表达式是一种用于模式匹配和文本处理的强大工具,广泛应用于字符串的搜索、匹配、替换和分割。今天,我们主要来介绍Python关于正则表达式处理的模块——re模块。同样,它提供了不少有用的利用正则表达来处理文本的方法。接下来,我们一个个来看:
1. 匹配字符串
当我们要匹配字符串的时候,可以用 re.match() 方法,它会从字符串的开头尝试按照正则表达式的规律来进行匹配。这里 r”hello” 是一个正则表达式,表示匹配以 “hello” 开头的字符串。前缀 r 是一个标记,表示这个字符串是原始字符串(raw string)。原始字符串的作用是让反斜杠 \ 不需要转义。在 Python 中,普通字符串中的反斜杠 \ 有特殊意义,比如 \n 表示换行,\t 表示制表符。如果你希望字符串中的反斜杠被解释为普通字符,使用 r 前缀非常方便。
import re
# 检查字符串是否以 "hello" 开头
result = re.match(r"hello", "hello world")
if result:
print("匹配成功:", result.group())
else:
print("匹配失败")
2. 搜索字符串
如果我们不确定目标字符串是否只在开头出现,而是想在整个字符串中查找,可以用 re.search()。与 re.match() 不同的是,re.search() 会在整个字符串中搜索匹配项,而不仅仅局限于开头。
# 在字符串中查找 "world"
result = re.search(r"world", "hello world")
if result:
print("匹配成功:", result.group())
else:
print("匹配失败")
3. 查找所有匹配项
有时候我们需要找到所有符合正则表达式条件的部分,这时可以用 re.findall()。这里,我们在上集介绍过\d+ 是正则表达式中的元字符,表示一个或多个数字。还有其他的元字符,不了解的去上一集看一下。re.findall() 会返回一个列表,包含所有匹配的结果,也就是所有的数字。
# 查找所有数字
numbers = re.findall(r"\d+", "我的电话号码是123456789,邮编是100010")
print("找到的所有数字:", numbers)
4. 替换字符串
有时候,我们要替换字符串中的某些内容,我们可以用 re.sub() 方法。这里,re.sub() 把所有的数字替换成了星号。第一个参数是正则表达式,第二个参数是替换后的内容,第三个参数是目标字符串。
# 将字符串中的数字替换成星号
text = "我的电话号码是123456789"
result = re.sub(r"\d", "*", text)
print("替换后的字符串:", result)
5. 分割字符串
如果需要按照某种模式将字符串分割成多个部分,可以用 re.split()。在这里正则表达式[ ,;] 表示空格、逗号或分号。re.split() 会根据这个这三种符号,将字符串分割成一个列表。
# 按空格或逗号分割字符串
text = "苹果,橙子 香蕉;西瓜"
result = re.split(r"[ ,;]", text)
print("分割后的列表:", result)
6. 编译正则表达式
如果我们需要多次使用同一个正则表达式,可以先用 re.compile() 编译它,这样可以提升性能。这里,re.compile() 会返回一个正则表达式对象,之后可以用它调用 findall()、match() 等方法。
# 编译正则表达式
pattern = re.compile(r"\d+")
text = "123 hello 456"
matches = pattern.findall(text)
print("找到的数字:", matches)
最后来总结一下,Python 的 re 模块,它为我们提供了强大的字符串处理功能。无论是简单的匹配还是复杂的提取,re 模块都能轻松应对。好啦,本频道将同步在B站和油管上更新,如果你喜欢我的内容,请不要忘记点赞、订阅和分享,这样就不会错过我更新的内容,欢迎在评论区提出你的想法和建议。今天就到这里,再见吧!

Leave a comment