关键词

详解Python re.fullmatch.posix函数:启用 POSIX 正则表达式语法

Python re模块

re 模块是 Python 内置的用于正则表达式操作的模块,可以实现文本的匹配、查找、替换等功能。如果你需要处理数据中的文本信息,如将不同格式的电话号码、邮箱地址或者身份证号码提取出来,或者根据文本中的关键词进行分类或者计数等,re 模块就是一个非常好的工具。

re.fullmatch(posix, pattern, string, flags=0)

该函数的作用是:尝试使用正则表达式模式 pattern 对字符串 string 进行全匹配,如果匹配成功,则返回匹配对象;否则返回 None

参数解释:

  • posix:布尔型参数,指定搜索是否应从字符开头开始,默认为 False
  • pattern:正则表达式字符串,用于匹配文本。
  • string:待匹配文本。
  • flags:匹配模式,常用的有 re.I 表示忽略大小写,re.M 表示多行匹配。

下面通过实例来展示这个函数的使用。

示例

匹配字符串

import re

pattern = "Hello,\s\w+"
text = "Hello, Alice"
match1 = re.fullmatch(pattern, text)
match2 = re.fullmatch(pattern, "Hello, Bob")
if match1:
    print(match1.group())
else:
    print("No match")
if match2:
    print(match2.group())
else:
    print("No match")

输出结果为:

Hello, Alice
No match

在这个例子中,我们将 pattern 定义为 Hello,\s\w+,表示一个以 "Hello, " 开头,后面紧跟着一个空格和一个或多个字母的单词结尾的字符串。text 是我们要匹配的字符串,包含了这个模式,因此可以通过 fullmatch 函数返回一个匹配对象 match1;而 match2 中没有这个模式,因此返回 None

匹配网址

有时候,我们需要从一大段文本中提取出网址链接,这时候就需要向 re.fullmatch() 函数中传递一个相应的正则表达式模式。

import re

pattern = r"(https?://)?(\w+\.)*\w+\.(com|cn|org)"
text = "Here is the official website of Tsinghua University: https://www.tsinghua.edu.cn/"
match = re.search(pattern, text)
if match:
    print(match.group())
else:
    print("No match")

这里,我们定义了一个正则表达式模式 pattern,用于匹配网址。模式基本包括以下几个部分:

  • (https?://)?:可选的协议部分,包括 http 或者 https
  • (\w+\.)*:多个子域名部分,例如 wwwblog 等,由字母和数字组成。
  • \w+\.:主域名部分,例如 comcn 等。
  • (com|cn|org):结尾处允许的几个顶级域名。

除了这几个部分,还可以灵活地添加其它匹配条件。这样定义之后,我们可以通过调用 re.fullmatch() 函数对文本进行匹配,输出的结果即为匹配的网址。

本文链接:http://task.lmcjl.com/news/15407.html

展开阅读全文