如何用正则提取img标签src值?兼容DataWeave的解决方案
解决DataWeave中提取img标签src属性的问题
因为DataWeave依赖的Java正则引擎不支持\K断言,所以需要换两种更可行的方案:
方案一:调整正则表达式(用捕获组替代\K)
把原来依赖\K的正则改成使用捕获组来提取目标值,避免不支持的语法。适配转义双引号"的正则如下:
/<img\s.*?src=\\"(.*?)\\"/
DataWeave示例代码
var htmlContent = '<div><img id="img1" src="https://actual-image-url" /></div>' var srcPattern = /<img\s.*?src=\\"(.*?)\\"/ output application/json --- srcPattern.find(htmlContent)[1] // 输出:"https://actual-image-url"
这里用非贪婪匹配.*?避免匹配过多内容,通过捕获组(.*?)获取src的真实值,再从匹配结果数组中取索引1的元素。
方案二:使用DataWeave的HTML解析功能(更可靠)
正则处理HTML容易受属性顺序、空格变化等影响,用parseHTML函数解析结构化HTML会更鲁棒:
DataWeave示例代码
var htmlContent = '<div><img id="img1" src="https://actual-image-url" alt="sample" /></div>' output application/json --- // 提取所有img标签的src属性,替换转义引号得到真实URL parseHTML(htmlContent).root.*img.@src map ($ replace /"/ with "")
这个方法直接解析HTML节点,精准获取属性值,再处理转义字符,适合复杂HTML场景。
内容的提问来源于stack exchange,提问作者Panneer Selvam
相关产品推荐
相关产品推荐

