gpt4 book ai didi

python - 如何使用正则表达式从看似乱码的文本中提取某些子文本模式?

转载 作者:行者123 更新时间:2023-12-01 00:55:38 25 4
gpt4 key购买 nike

我有一些文本,其中一些记录(不是全部)中提到某人的年龄和性别为 28M35 F29 男,或 57 女

我编写了以下正则表达式来检查输入字符串中是否存在与数字后跟 M 匹配的模式,如果是则将其打印出来,但代码不打印任何东西:

import re

text = 'Decision: Standard\r\n\r\n 36M NS\r\nBasic - 500th MP tdb addd cib 250th\r\n\r\nDue Date: Settlement date'

test_search = re.search('[0-9]+M', text)

if test_search:
print("Age: "+test_search.group(0)+", Gender: "+test_search.group(1))

我预计它会打印年龄:36,性别:M。然而,它什么也没做——没有错误,没有输出,什么也没有。

我尝试了re.match('[0-9]+F', text),也没有发生任何事情。

此外,我认为我必须编写与模式一样多的正则表达式(28M35 F29Male 各一个) ,57 女性等)。这是正确的方法吗?或者有没有办法一次搜索/查找/匹配所有这些模式?

最佳答案

您可以使用此正则表达式来匹配您提到的所有情况:

results = re.findall(r'(?i)(\d+)\s*([mf]|(?:fe)?male)\b', text)

RegEx Demo

详细信息:

  • (?i):忽略大小写修饰符
  • (\d+):匹配并捕获第 1 组中的 1 个以上数字
  • \s*:匹配 0 个或多个空格
  • ([mf]|(?:fe)?male):匹配或捕获MFmale女性 在第 2 组
  • \b:字边界

关于python - 如何使用正则表达式从看似乱码的文本中提取某些子文本模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56270139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com