gpt4 book ai didi

Python 正则表达式选择现在完成时的动词

转载 作者:行者123 更新时间:2023-12-04 03:46:50 24 4
gpt4 key购买 nike

在给定的字符串中,我试图捕捉现在完成时态的动词。我通过在 python 中使用以下正则表达式来做到这一点:

import re
sentence = "The Batman has never shown his true identity but has done so much good for Gotham City"

verb = re.findall(r'has\s[^\,\.\"]{0,50}done', sentence)

结果是:

>>> print(verb)

['has never shown his true identity but has done']

在这里,正确答案应该是“已经完成”,但是“从未显示”中的“已经”是错误的“已经”。 [^\,\.\"]{0,50} 部分允许对“已完成”和“完成”之间的内容有一定的自由度,这里没有出现,但在我的网站上很有用真实数据。但是,它会捕获它找到的第一个“有”,这并不总是好的。是否可以取最后一个“有”?

最佳答案

您可以使用 tempered greedy token解决方法在这里:

\bhas\s(?:(?!\bhas\b)[^,."]){0,50}?\bdone\b

参见 regex demo .

详情

  • \bhas - 整个单词 has
  • \s - 一个空白字符
  • (?:(?!\bhas\b)[^,."]){0,50}? - 除了 ,, 之外的任何字符.",零到五十次出现,但尽可能少,不会以整个单词开头 has
  • \bdone\b - 整个单词done

查看 Python demo :

import re
sentence = "The Batman has never shown his true identity but has done so much good for Gotham City"
verb = re.findall(r'\bhas\s(?:(?!\bhas\b)[^,."]){0,50}?\bdone\b', sentence)
print(verb)
# => ['has done']

关于Python 正则表达式选择现在完成时的动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65026914/

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