如果这个问题得到了回答,我很抱歉,但经过详尽的研究后我找不到了。
我有一个相当大的文本文件,其中包含文件名和文本的嵌入文件路径。
问题:
需要做什么: 我需要找到文件路径并替换它们而不触及实际文件本身或扩展名的名称。 例如:
E:\sam\sam2\sam3\fafa.png needs to be replaced as foo\fafa.png or foo/fafa.png
但是,我无法触摸或替换任何http文件名。这些必须从查找和替换中排除。
我在Regex中尝试了很多可能性(我承认这是我的编码技巧的一个弱点),但似乎没有任何工作。
如果您有时间解释表达,我们将不胜感激。 重要说明:与Javascript / Node一起使用的Regex表达式将不胜感激。
答案 0 :(得分:1)
你可以试试这个:
([a-zA-z]:(?:[\\|\/][a-zA-Z\d-_. ]+)*)([\\|\/])([a-zA-Z\d-_]+\.[a-zA-z]+)
并替换为:
`foo$2$3`;
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);