使用模式从字符串中提取数据[关闭]
Posted
技术标签:
【中文标题】使用模式从字符串中提取数据[关闭]【英文标题】:Extract data from string using pattern [closed] 【发布时间】:2017-09-10 19:44:11 【问题描述】:您好,我的字符串很长:
'bla bla bla... <img src="/uploads/photo.png" /> bla bla bla...'
我想从这个长字符串中提取:图像标签 - 宽度、高度,当然还有路径......也许是这样的:
<img src="*" />
但我不知道如何获取“*”数据。您能否建议我提取图像路径的代码(*
)。可能在 C#、VB 或 Java 中......任何东西。谢谢!
【问题讨论】:
您使用 Regex 或 Trim 和 Regex 标记了自己的解决方案 【参考方案1】:不要使用正则表达式来解析 html。使用已安装的 html 解析器。例如。你可以使用HtmlAgilityPack:
var html = "bla... <img src=\"/uploads/photo.png\" width=\"143\" height=\"136\" /> bla...";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
var img = doc.DocumentNode.Element("img");
var src = img.Attributes["src"].Value; // "/uploads/photo.png"
var width = img.Attributes["width"].Value; // "143"
var height = img.Attributes["height"].Value; // "136"
或AngleSharp
var parser = new HtmlParser();
var doc = parser.Parse(html);
var img = doc.QuerySelectorAll("img").FirstOrDefault();
var src = img.Attributes["src"].Value; // "/uploads/photo.png"
var width = img.Attributes["width"].Value; // "143"
var height = img.Attributes["height"].Value; // "136"
【讨论】:
【参考方案2】:这是一个使用 Regex 的简单 javascript 解决方案:
> s = 'bla bla bla... <img src="/uploads/photo.png" /> bla bla bla...'
> s.match(/<.*>/)[0]
'<img src="/uploads/photo.png" />'
【讨论】:
我将使用您的正则表达式从长字符串中提取 html 标签,并使用 Sergey Berezovskiy 的 HtmlAgilityPack 对其进行解析。以上是关于使用模式从字符串中提取数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章