gpt4 book ai didi

c# - 使用正则表达式提取匹配文本

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:12 25 4
gpt4 key购买 nike

我必须从报纸文章中提取摘要。摘要是根据给定的关键字和下面提到的规则提取的。

  1. 摘要应为 200 个字符。

  2. 一旦关键字出现,就从文章中的那句话开始打印出现在该句子中并打印最多 200 个字符

  3. 如果匹配的句子出现在文章的结尾,这样summary出来不到200字,然后搬家从匹配的句子回到前面的句子直到最后打印出包含匹配句子的 200 个字符终于。

到目前为止我所做的是......

var regex = new Regex(keyword+@"(.{0,200})");

foreach (Match match in regex.Matches(input))
{
var result = match.Groups[1].Value;
Console.WriteLine(result);

// work with the result
}

上面的代码成功到达了第一个匹配句子,但开始打印 AFTER 关键字最多 200 个字符,而不是匹配句子的开头。

如果在打印 200 个字符之前到达文章末尾,也没有回溯。

请指导我应该如何进行。即使有人不知道完整的解决方案,请在问题的子部分帮助我。

最佳答案

var nextIndex = input.IndexOf(keyword);

while (nextIndex != -1)
{
var index = nextIndex;
// To start the 200chars result from right after the keyword, do instead:
// var index = nextIndex + keyword.Length;

// If you want to stop after you reached the end of the text once:
// var end = false;

if (index + 200 >= input.Length)
{
index = input.Length - 200;

// If you want to stop after you reached the end of the text once:
// var end = true;
}

var result = index < 0 ? input : input.Substring(index, 200);

Console.WriteLine(result);

// If you want to stop after you reached the end of the text once:
// if (end) { break; }

nextIndex = input.IndexOf(keyword, nextIndex + 1);
}

如果您希望搜索不区分大小写,只需将 StringComparison.OrdinalIgnoreCase 添加为两个 IndexOf 中的另一个参数即可。

关于c# - 使用正则表达式提取匹配文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12832664/

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