【发布时间】:2018-07-24 12:03:34
【问题描述】:
这是一个序列:
<h>blue</h>
<td>Water</td>
<h>red</h>
<td>Apple</td>
<h>yellow</h>
<td>Sun</td>
我想使用 RegEx 在字符串 red 之后查找第一次出现的 <td>。
我试过(?<=red)(<td>)([\s\S]*?)(</td>),但我什么也没回。我不确定为什么。
我最接近的是(?<=red)([\s\S]*?)(</td>),但它添加了空格和标签。
我知道我可以使用索引和子字符串操作来做到这一点,但我宁愿使用 RegEx。
有没有办法做到这一点? 我正在专门寻找 C# 特定的解决方案。
string s = Regex.Match(s, @"(?<=red)([\s\S]*?)(</td>)");
【问题讨论】:
-
不要为此使用正则表达式。使用 XML 解析器,可能类似于 XPath。
-
你的正则表达式周围的 c# 代码是什么?
-
@Isaac string s = Regex.Match(s, @"(?)");
-
cmets 中的代码不存在。相反,edit 您的问题并将其添加到那里。
-
假设您的“序列”实际上是 XML,并且您正在寻找任何包含“红色”的元素,并且您实际上正在寻找
<td>元素,而不仅仅是是否存在,您可以使用 @987654329 @。如果这些假设中的任何一个不正确,请澄清您的问题。