gpt4 book ai didi

python - 如何将标题大写句子与介词匹配?

转载 作者:行者123 更新时间:2023-11-28 17:59:45 26 4
gpt4 key购买 nike

我想使用正则表达式从文档中提取标题大小写句子。我希望我的正则表达式在介词大写和不大写时匹配句子。

例如我希望它匹配:

The Art of War

The Art Of War

我试过在 Reddit 评论中使用几个正则表达式,但我永远无法得到正确的句子,因为我发现了很多误报。

我在 Python 中尝试了这个正则表达式:

import regex
pattern = regex.compile(r"\b(?<!^)(?<=[A-Z]\w*\s?)(a(?:nd?)?|the|to|[io]n|from|with|of|for)(?!$)(?!\s?[a-z])\b|\b([A-Z]\w*)")
reddit_comment= "Honestly 'The Art of War' should be required reading in schools (outside of China), it has so much wisdom packed into it that is so sorely lacking in our current education system."
pattern.findall(reddit_comment)

我原以为它只会检索“孙子兵法”,但我却得到了:

[('', 'Honestly'),
('', 'The'),
('', 'Art'),
('of', ''),
('', 'War'),
('', 'China')]

最佳答案

你可以使用

r'\b(?!^)[A-Z]\w*(?:\s+(?:a(?:nd?)?|the|to|[io]n|from|with|of|for|[A-Z]\w*))+\b'

参见 regex demo .

详情

  • \b - 单词边界
  • (?!^) - 否定前瞻:此处没有字符串位置的开始
  • [A-Z] - 大写字母
  • \w* - 0+ 个字母、数字或 _
  • (?:\s+(?:a(?:nd?)?|the|to|[io]n|from|with|of|for|[A-Z]\w*))+ - 非捕获组内模式的零次或多次重复:
    • \s+ - 1+ 个空格
    • (?:a(?:nd?)?|the|to|[io]n|from|with|of|for|[A-Z]\w*) - 任何一个
      • a(?:nd?)? - aan
      • |the|to| - 或 theto
      • [io]n - inon
      • |from|with|of|for| - 或 fromwithof
      • [A-Z]\w* - 一个大写字母和 0+ 个字母、数字或 _
  • \b - 单词边界

关于python - 如何将标题大写句子与介词匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273950/

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