2017-03-15 51 views
0

我很抱歉,如果這個問題已被問及答案,但經過詳盡的研究後,我找不到它。正則表達式查找和替換文件中的文件路徑Javascript

我有一個相當大的文本文件,其中嵌入文件路徑的文件名稱以及文本。

問題:

  1. 一些文件路徑是http和其他規範性是文件 路徑。
  2. 正常的文件路徑可以以任何文件和擴展名結尾。
  3. 斜槓可以是文件路徑中的/或\。

需要完成什麼: 我需要找到文件路徑並替換它們而不用觸及實際文件本身或擴展名。 例如:

E:\sam\sam2\sam3\fafa.png needs to be replaced as foo\fafa.png or foo/fafa.png

但是,我不能碰,也沒有更換任何HTTP文件names..these必須從查找排除和替換。

我已經在正則表達式中嘗試了很多可能性(我承認這是我的編碼技巧中的一個弱點),但似乎沒有任何工作。

任何和所有的幫助,將不勝感激,如果你有時間表達的解釋。 重要提示:正則表達式與JavaScript/Node一起工作,將不勝感激。

回答

1

你可以試試這個:

([a-zA-z]:(?:[\\|\/][a-zA-Z\d-_. ]+)*)([\\|\/])([a-zA-Z\d-_]+\.[a-zA-z]+) 

,並通過更換:

`foo$2$3`; 

Demo

const regex = /([a-zA-z]:(?:[\\|\/][a-zA-Z\d-_. ]+)*)([\\|\/])([a-zA-Z\d-_]+\.[a-zA-z]+)/g; 
 
const str = `E:\\sam\\sam2\\sam3\\fafa.png 
 
bla bla bla http://blabla\\sam\\sam2\\sam3\\fafa.png kla kla kla 
 
zzz E:\\sam\\billings\\cricketer.png adfaffdas 
 
asdfasdfsdf 
 
`; 
 
const subst = `foo$2$3`; 
 
const result = str.replace(regex, subst); 
 
console.log(result);

+0

圖曼先生非常感謝你。我在這上面爭論了幾個小時。 – twg

相關問題