使用模式从字符串中提取数据[关闭]

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 中......任何东西。谢谢!

【问题讨论】:

您使用 RegexTrimRegex 标记了自己的解决方案 【参考方案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 对其进行解析。

以上是关于使用模式从字符串中提取数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Redshift - 根据模式提取数据

从pandas数据框架中的模式中提取字符串。

从字符串正则表达式 PHP 中提取数值 [关闭]

正则表达式。如何从xml文档中提取值[关闭]

从字符串中提取分数、小数和数字的正则表达式[关闭]

从奇数Dd HH:MM:SS.mm格式中提取时间数据[关闭]