2016-10-03 21 views
1

我上提取個XML鏈接的圖像文件名被鏈接像下面正則表達式從個XML

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

注意工作中提取圖像的圖像文件名會如何有時候啓動後(有時後一個空白。圖片是jpg或png。還要注意在第一個圖像中,下劃線和破折號用在文件名中,任何幫助正則表達式都會非常感謝,我已經編寫了一個函數來循環字符串版本的文件以提取但它看起來很雜亂

+1

試試['/]\(\s*(\S+)\s*\)/g'](https://regex101.com/r/Fpa0vZ/ 1)並獲得組1的內容。實際上,你有什麼上下文以及正則表達式應該更具體還不是很清楚。 –

回答

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);

+0

非常感謝! – nasoj1100