【发布时间】:2015-12-03 19:49:34
【问题描述】:
如何在出现一个单词后进行搜索,例如想象以下字符串:
The Fisrt Colors
red green yellow
blue white violet
red green orange
The Second Colors
red black white
green cyan magenta
red magenta blue
我需要搜索包含red 的行,它们在上面的示例中位于The Second Colors 之后,预期结果是:
red black white
red magenta blue
我使用 :
进行简单搜索 foreach (Match match in Regex.Matches(MyString, @"[\n\r].*red\s*([^\n\r]*)"))
{
}
但上面的代码在这种情况下不起作用,因为它会返回
red green yellow
red green orange
red black white
red magenta blue
编辑 1:
作为@Jonesopolis cmets,如果The Second Colors 被移到The First Colors 上方会怎样。我的意思是如何限制这两个标题之间的结果(例如 The Second Colors 和 The Third Colors ?
【问题讨论】:
-
“第二种颜色”对您来说是一个不变的关键字吗?如果是,您可以先对字符串进行子串化,然后通过 RegEx 查找匹配项
-
@HarutyunImirzyan 不!它不是一个常量关键字
-
@ᔕIᑎᗩKᗩᖇᐯᗩᑎᗪI:这里的是常量是什么?你想匹配边界之间的东西。请定义这些界限。否则无法提供有效答案。
-
@stribizhev 实际上常数是
The Header
并且在上面的例子中它:The Second Colors
所以我认为常数是但是因为我不想改变问题的形式,最好把 The Second Colors 作为一个固定词。
-
@ᔕIᑎᗩKᗩᖇᐯᗩᑎᗪI:现在很清楚您正在使用正则表达式解析 HTML。正确地做到这一点会更容易:1)使用 HTML 解析器来获取正确的 H1,2)获取必要的行。现在,The Second Colors 是起始边界。尾随是什么?