正则表达式查找和替换文件Javascript中的文件路径

时间:2017-03-15 07:18:12

标签: javascript node.js regex

如果这个问题得到了回答,我很抱歉,但经过详尽的研究后我找不到了。

我有一个相当大的文本文件,其中包含文件名和文本的嵌入文件路径。

问题:

  1. 其中一些文件路径是http,其他文件路径是规范文件 路径。
  2. 普通文件路径可以以任何文件和扩展名结尾。
  3. 斜杠可以是文件路径中的/或\。
  4. 需要做什么: 我需要找到文件路径并替换它们而不触及实际文件本身或扩展名的名称。 例如:

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

    但是,我无法触摸或替换任何http文件名。这些必须从查找和替换中排除。

    我在Regex中尝试了很多可能性(我承认这是我的编码技巧的一个弱点),但似乎没有任何工作。

    如果您有时间解释表达,我们将不胜感激。 重要说明:与Javascript / Node一起使用的Regex表达式将不胜感激。

1 个答案:

答案 0 :(得分: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);