2017-03-15 11 views
0

この質問に尋ねられ、回答されたが、徹底的な調査の結果、私はそれを見つけることができない。正規表現ファイル内のファイルパスを検索して置換Javascript

私はかなり大きなテキストファイルを持っていますが、そこにはファイル名とテキストのパスが埋め込まれています。

問題:

  1. は、これらのファイルパスの一部は、httpであり、他は パス規範ファイルです。
  2. 通常のファイルパスは、任意のファイルと拡張子で終了できます。
  3. スラッシュは、ファイルパスの/または\のいずれかにすることができます。
  4. 行わ取得する必要がどのような

: 私は、ファイルパスを検索し、実際のファイル自体または拡張子の名前を触れることなく、それらを交換する必要があります。例えば :

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

しかし、私は、任意のHTTPファイルnames..theseに触れたり置き換えることはできませんが検索対象から除外して交換することが必要です。

私はRegex(私のコーディングスキルの弱点を認めています)で数多くの可能性を試しましたが、何も動作しないようです。

すべてのヘルプは高く評価されます。 重要な注意: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

M.トーマンは本当にありがとう。私はこれで何時間も脳をスクランブルしていました。 – twg

関連する問題