首页 > 解决方案 > 在 C# 中使用什么正则表达式从单词 BEHIND 开始匹配(向后匹配......)直到匹配?

问题描述

假设 HTML 中的代码:

<a href="http://google.com">this is a search engine</a>"

如何寻找“引擎”并匹配任何东西,直到达到“这个”?

我知道我可以做到:this.*?engine- 但这是从左到右匹配,即“提前”匹配,如果可能的话,我想在这里向后阅读?

标签: c#regex

解决方案


您可以反转所有字符串并执行正常搜索:

string text = @"<a href=""http://google.com""> this is a search engine </a>";
string engine = "engine";
string strThis = "this";

new string(
  Regex.Match(
    new string(text.Reverse().ToArray()),
    new string(engine.Reverse().ToArray()) + ".+" + new string(strThis.Reverse().ToArray()))
 .Value
 .Reverse()
 .ToArray())

此外,为了使代码更清晰,您可以在 a 上定义扩展方法string,它反转字符串并返回string而不是IEnumerable<char>. 请参阅此内容以供参考。


推荐阅读