0

我需要匹配:

<p><span style="font-size: 18px;"><strong>Hello</strong></span></p>

我需要匹配最后一个>和第一个之间的文本 hello</

使用(?=>)(.*?)(?=</)回报<span style="font-size: 18px;"><strong>Hello

谢谢!

4

5 回答 5

2

我知道这不是您要寻找的答案,但是用正则表达式解析 html 就像用叉子吃汤一样。你最终会完成工作,但这非常令人沮丧。

试试这个,保持理智:

string html = "<p><span style=\"font-size: 18px;\"><strong>Hello</strong></span></p>";
System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Parse(html);
string hello = doc.Descendants().LastOrDefault().Value;
于 2013-10-09T13:29:39.703 回答
1

你可以和

/>([^<>]+)</

那应该给你想要的匹配。

于 2013-10-09T13:18:58.390 回答
0

你只需要匹配这个特定的字符串吗?如果是,那么您可以简单地使用:

/<strong>([^<]*)</strong>/

这将匹配strong标签之间的任何文本。

于 2013-10-09T13:22:14.920 回答
0

尝试这个

正则表达式的常量变量是

const string HTML_TAG_PATTERN = "<.*?>";

功能

 static string StripHTML(string inputString)
        {
            return Regex.Replace
              (inputString, HTML_TAG_PATTERN, string.Empty);
        }

并调用函数

string str = "<p><span style='font-size: 18px;'><strong>Hello</strong></span></p>";

str = StripHTML(str);
于 2013-10-09T13:22:43.003 回答
0

我认为您的第一个look ahead必须看起来更像(?<=>):( look behindfor >)

并替换.*?[^<>]*(除<or之外的任何内容>)。

如果你需要保留你的look around,你可以这样做: (?<=>)([^<>]*)(?=</)

如果没有,您可以简单地执行以下操作:>([^<>]*)</

不同之处在于,使用you 不会在全局匹配中look around捕获<任何一个。</

于 2013-10-09T14:11:27.970 回答