乐趣区

关于人工智能:62-re-正则表达式

re 模块是 Python 规范库中用于解决正则表达式的模块。正则表达式是一种弱小的文本处理工具,能够用于查找、替换和匹配文本。在本节中,咱们将介绍 re 模块的一些罕用性能,并通过实例代码具体解说每个知识点。

6.2.1 导入 re 模块

要应用 re 模块,首先须要导入它:

import re

6.2.2 罕用正则表达式函数

re 模块提供了许多用于解决正则表达式的函数,以下是一些罕用的函数:

1. re.search()

re.search() 函数用于在字符串中查找匹配的子串。如果找到匹配项,则返回一个匹配对象;否则返回 None

示例:

import re

pattern = r"\d+"
text = "There are 42 apples in the basket."

match = re.search(pattern, text)
if match:
    print(f"Found match: {match.group()}")
else:
    print("No match found")

在这个例子中,咱们查找一个或多个间断数字(\d+)。当找到匹配项时,咱们打印匹配到的子串。

2. re.findall()

re.findall() 函数用于在字符串中查找所有匹配的子串。返回一个蕴含所有匹配子串的列表。

示例:

import re

pattern = r"\d+"
text = "I have 3 cats and 2 dogs."

matches = re.findall(pattern, text)
print(f"Found matches: {matches}")

在这个例子中,咱们同样查找一个或多个间断数字(\d+)。当找到匹配项时,咱们打印所有匹配到的子串。

3. re.sub()

re.sub() 函数用于替换字符串中匹配的子串。返回一个新的字符串,其中匹配的子串被替换为指定的字符串。

示例:

import re

pattern = r"\d+"
replacement = "number"
text = "I have 3 cats and 2 dogs."

new_text = re.sub(pattern, replacement, text)
print(f"New text: {new_text}")

在这个例子中,咱们用 “number” 替换所有的间断数字(\d+)。而后咱们打印替换后的字符串。

6.2.3 编译正则表达式

如果你须要屡次应用同一个正则表达式,能够先编译它,而后在须要时应用。编译正则表达式能够进步匹配效率。

要编译正则表达式,请应用 re.compile() 函数:

import re

pattern = r"\d+"
compiled_pattern = re.compile(pattern)

text1 = "I have 3 cats and 2 dogs."
text2 = "There are 42 apples in the basket."

matches1 = compiled_pattern.findall(text1)
matches2 = compiled_pattern.findall(text2)

print(f"Matches in text1: {matches1}")
print(f"Matches in text2: {matches2}")

在这个例子中,咱们先编译了正则表达式,而后在两个不同的字符串上应用它。这样能够防止每次调用 findall() 时都须要从新解析正则表达式。

6.2.4 小结

咱们曾经介绍了 Python re 模块的一些罕用性能,包含:

  • re.search():在字符串中查找匹配的子串
  • re.findall():在字符串中查找所有匹配的子串
  • re.sub():替换字符串中匹配的子串
  • 编译正则表达式以进步匹配效率

以下是一些练习题,以帮忙你坚固所学的常识:

  1. 编写一个程序,提醒用户输出一个字符串,而后查找其中所有的电子邮件地址,并打印进去。电子邮件地址的正则表达式能够用:r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
  2. 编写一个程序,提醒用户输出一个字符串,而后将其中的数字替换为单词 “number”。
  3. 编写一个程序,提醒用户输出一个字符串,而后验证其是否是一个无效的电话号码。无效的电话号码能够用以下正则表达式示意:r"^(\+\d{1,2}\s)?\(?\d{1,4}\)?[\s.-]\d{1,4}[\s.-]\d{1,4}$"

请尝试本人编写这些程序,并在遇到问题时参考本节的内容。通过这些练习,你将更好地了解并把握 Python re 模块的性能。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

退出移动版