【问题标题】:Regex to extract images from xmls正则表达式从 xml 中提取图像
【发布时间】:2016-10-03 18:17:54
【问题描述】:

我正在提取在 xml 中链接的图像文件名,这些文件名如下所示

<text>
  ![Image description](iuiFE240H-dM_2DAHpuRxt.jpg) 
</text>
<text>
  ![Image description](9u0I7ExVD0bzSfRIyEiH.png) 
</text>
<text>
  ![Image description]( 0eA0SaTj8d90aHrs72rC.jpg ) 
</text>

请注意有时图像文件名可能会在 ( 之后有时会在空格之后开始。图像是 jpg 或 png。还要注意在第一张图像中,文件名中使用了下划线和破折号。有关此正则表达式的任何帮助将不胜感激。我编写了一个函数,该函数循环遍历文件的字符串版本以提取图像,但看起来非常混乱。

【问题讨论】:

  • 尝试/]\(\s*(\S+)\s*\)/g 并获取第 1 组的内容。实际上,尚不清楚您拥有什么上下文以及正则表达式是否应该更具体。

标签: javascript regex


【解决方案1】:

一种天真的方法是在]( 和可选空格之后获取任何非空白文本块:

/]\(\s*(\S+)\s*\)/g

请参阅regex demo

为了更精确,添加更多上下文子模式,例如

/!\[Image description]\(\s*(\S+)\s*\)/g
/]\(\s*([^\s)]+\.(?:jpe?g|png))\s*\)/gi

等等

详情

  • ]\( - 匹配 ]( 字符序列
  • \s* - 0+ 个空格
  • (\S+) - 1+ 个非空白字符
  • \s* - 0+ 个空格
  • \) - 文字 )

更多细节:

  • [^\s)]+ - 匹配除空格和 ) 以外的 1 个或多个字符
  • \. - 一个点
  • (?:jpe?g|png) - jpg,或jpeg,或png
  • /i - 启用不区分大小写的匹配
  • /g - 启用全局修饰符以匹配多次出现。

var regex = /]\(\s*(\S+)\s*\)/g;
var str = `<text>
  ![Image description](iuiFE240H-dM_2DAHpuRxt.jpg) 
</text>
<text>
  ![Image description](9u0I7ExVD0bzSfRIyEiH.png) 
</text>
<text>
  ![Image description]( 0eA0SaTj8d90aHrs72rC.jpg ) 
</text>`;
var res = [];

while ((m = regex.exec(str)) !== null) {
  res.push(m[1]);
}
console.log(res);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多