gpt4 book ai didi

c# - 正则表达式在丢弃特定句子的同时提取多个句子

转载 作者:行者123 更新时间:2023-11-30 21:07:51 28 4
gpt4 key购买 nike

In: preferences = '你好,我叫保罗。我讨厌拼图。”
我想提取 Hello my name is paul.

在:preferences = 'Salutations my name is richard.我喜欢披萨。我讨厌下雨。”
我想提取 Salutations 我的名字是 richard。我喜欢披萨。

In: preferences = '嗨,我叫鲍勃。我喜欢冰淇淋。”
我想提取 大家好,我叫鲍勃。我喜欢冰淇淋。

换句话说,我想

  • 总是丢弃preferences = '
  • 丢弃 任何最后 句子(由 . 分隔)包含单词 hateif present
  • 丢弃最后的'

我的问题是我的正则表达式在第一个 . 处停止并且没有提取后续句子。

谢谢。

最佳答案

您可以使用正则表达式实现您想要的:

^preferences\s*=\s*'(.*?\.)(?:[^.]*\bhate\b[^.]*\.)?'$

那个不是太棘手:

  • (.*?\.) - 匹配您预期的输出,将在 $1 组中捕获。该模式匹配“句子”(如您定义的那样),但延迟匹配 (*?),尽可能少。
  • (?:[^.]*\bhate\b[^.]*\.)? - 可选择匹配最后一句话,但前提是它包含“讨厌”。如果能匹配到,而且是最后一句,匹配引擎不会回溯,最后一句不会被抓包。

这是 Rubular 中的一个工作示例:http://www.rubular.com/r/qTuMmB3ySj
(我在几个地方添加了 \r\n,以避免 [^.] 匹配新行)

老实说,如果可以避免的话,在这里你可以做得比单个正则表达式更好。

关于c# - 正则表达式在丢弃特定句子的同时提取多个句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058060/

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