我需要匹配:
<p><span style="font-size: 18px;"><strong>Hello</strong></span></p>
我需要匹配上一个>
和第一个</
之间的文本问候
使用(?=>)(.*?)(?=</)
返回<span style="font-size: 18px;"><strong>Hello
谢谢!
答案 0 :(得分: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;
答案 1 :(得分:1)
你可以选择
/>([^<>]+)</
这应该会给你想要的匹配。
答案 2 :(得分:0)
您只需要匹配此特定字符串吗?如果是,那么你可以简单地使用:
/<strong>([^<]*)</strong>/
将匹配strong
代码之间的任何文字。
答案 3 :(得分: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);
答案 4 :(得分:0)
我认为您的第一个look ahead
必须更像:(?<=>)
(look behind
>
}
将.*?
替换为[^<>]*
(<
或>
除外)。
如果您需要保留look around
,您可以执行以下操作:
(?<=>)([^<>]*)(?=</)
如果没有,您只需执行:>([^<>]*)</
不同之处在于,使用look around
您不会在全局匹配中捕获<
</
。