【问题标题】:Regex LookAhead limit to one (or first match)正则表达式 LookAhead 限制为一个(或第一个匹配)
【发布时间】:2016-07-29 22:33:14
【问题描述】:

我正在尝试在众多预设问题之间匹配字符串(答案)。这些问题很混乱,但它们确实以每个问题前面的“问题:”开头。紧随其后的是“Answer”。

regex = new Regex(@"(?s)(?<=What is blah blah..Answer)(.*)(?=Question)"); 

这个正则表达式让我得到了正确的答案。但是过度选择了以下所有问题。

有没有办法将前瞻限制到“问题”的第一个实例?

编辑: 真实样题:

问题:土豆是用什么做的?

答案:主要来自碳水化合物(淀粉)

问题:番茄是用什么做的?

答案:不是土豆。

【问题讨论】:

  • 显示一个真实的样本而不是在你的正则表达式中写“blahblah”,这将解决许多假设。 (输入字符串、所需输出、替换或仅匹配)
  • 感谢您的反对票。它确实帮助我找到了答案。
  • 答案是否包含换行符?如果没有,@"Answer: (.*)" 应该是你所需要的。
  • 如果你不想被否决,那就努力写一个好问题,而不是像 blah blah 那样写废话。
  • “blah blah”和实际问题有什么区别?在问题的背景下,任何文本都可以使用。我不明白你们这些敏感的人,对示例文本感到不安。

标签: c# regex lookahead


【解决方案1】:

你应该使用

使主要部分不贪婪
 .*? instead of .*

【讨论】:

  • 谢谢,很高兴有人真的想帮忙。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多