gpt4 book ai didi

python - 正则表达式查找两个可选模式之间的所有内容,如果没有则返回全部

转载 作者:行者123 更新时间:2023-12-01 08:29:42 26 4
gpt4 key购买 nike

我有许多新闻文章,其中一些有介绍和结尾陈述。可能的组合是...

  • 一些有关新闻报道的文字。
  • BBC 报道:一些有关新闻报道的文字。请访问 BBC.com 了解更多信息。
  • BBC 报道:一些有关新闻报道的文字。
  • 一些有关新闻报道的文字。请访问 BBC.com 了解更多信息。

我想做的是返回“一些关于新闻报道的文本”。在每种情况下。我有下面的正则表达式,它返回第一个和第二个示例。当有介绍或结束语句时我很挣扎。

re.search(r'(?i)(?<=: ).*(?=Read more|Full story|\. Source)', str(doc)).group()

# "(?i)" to ignore case.
# "(?<=: )" to capture text after and excluding ": "
# ".*" match everything between the two patterns.
# "(?=Read more|Full story|\. Source)" match everything before these three strings.

最佳答案

看来你可以使用

import re
doc = "The BBC reports: Some text about a news story. Read more on BBC.com."
rx = r'(?i)(?:[^:\n]*:\s*|^)(.*?)(?:$|Read more|Full story|\. Source)'
m = re.search(rx, doc)
if m:
print(m.group(1))

请参阅regex demo .

详细信息

  • (?i) - 忽略大小写标志
  • (?:[^:\n]*:\s*|^) - 匹配除 : 之外的 0+ 个字符和一个的非捕获组换行符后跟 :,然后是 0+ 空格或字符串开头
  • (.*?) - 第 1 组:除换行符之外的任何 0+ 字符尽可能少
  • (?:$|阅读更多|完整故事|\.Source) - 非捕获组匹配阅读更多完整故事。来源

关于python - 正则表达式查找两个可选模式之间的所有内容,如果没有则返回全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969539/

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