const regex = /((?:(?# path without "" )(?<opening>(?# 'C:/', '//', '//./<UNC/C:>', '//?/<UNC/C:>' or '%VariableWindows%')(?<UNCPrefix>[\/\\][\/\\][?.][\/\\](?:UNC[\/\\])?)?(?<montage>\b[a-zA-Z]:[\/\\])|(?:(?:(?&UNCPrefix))|(?:[\/\\][\/\\](?!(?&montage))))|(?:%\w+%[\/\\]?))(?:(?# directory btw // )[^\/\\<>:"|?\n\r ][^\/\\<>:"|?\n\r]*(?<![ ])[\/\\])*(?:(?#we search for fileName only if next character is pathFriendly)(?=[^\/\\<>:"'|?\n\r;, ])(?:(?#name file ? dir ?)(?:[^\/\\<>:"|?\n\r;, .](?: (?=\w))?(?:\*(?!= ))?(?!(?&montage)))+)?(?:(?#extention)\.\w+)*))|(?:(?# path quoted "" or '' )["'](?&opening)(?=.*?["'])(?:[^\/\\<>:'"|?\n\r]+[\/\\]?)+?["']))/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('((?:(?# path without "" )(?<opening>(?# \'C:\/\', \'\/\/\', \'\/\/.\/<UNC\/C:>\', \'\/\/?\/<UNC\/C:>\' or \'%VariableWindows%\')(?<UNCPrefix>[\\\/\\\\][\\\/\\\\][?.][\\\/\\\\](?:UNC[\\\/\\\\])?)?(?<montage>\\b[a-zA-Z]:[\\\/\\\\])|(?:(?:(?&UNCPrefix))|(?:[\\\/\\\\][\\\/\\\\](?!(?&montage))))|(?:%\\w+%[\\\/\\\\]?))(?:(?# directory btw \/\/ )[^\\\/\\\\<>:"|?\\n\\r ][^\\\/\\\\<>:"|?\\n\\r]*(?<![ ])[\\\/\\\\])*(?:(?#we search for fileName only if next character is pathFriendly)(?=[^\\\/\\\\<>:"\'|?\\n\\r;, ])(?:(?#name file ? dir ?)(?:[^\\\/\\\\<>:"|?\\n\\r;, .](?: (?=\\w))?(?:\\*(?!= ))?(?!(?&montage)))+)?(?:(?#extention)\\.\\w+)*))|(?:(?# path quoted "" or \'\' )["\'](?&opening)(?=.*?["\'])(?:[^\\\/\\\\<>:\'"|?\\n\\r]+[\\\/\\\\]?)+?["\']))', 'g')
const str = `\\\\LOCALHOST\\c\$\\temp\\test-file.txt"
@"c:\\temp\\test-file.txt",
@"\\\\127.0.0.1\\c\$\\temp\\test-file.txt",
@"\\\\LOCALHOST\\c\$\\ temp\\test-file.txt",
@"\\\\.\\c:\\temp\\test-file.txt",
@"\\\\?\\c:\\temp\\est-file.txt",
@"\\\\.\\UNC\\LOCALHOST\\c\$\\temp\\test-file.txt",
@"\\\\127.0.0.1\\c\$\\temp\\test-file.txt"
file:///C:/Users/Downloads/20220516_32289275_1049383.pdf
file://p-eco2.rd.fr/vol_H0037_01\$/599/livraison/20220516_32289275_1049383.pdf
--> couper les path apres le '\\ ', meme que on est arrivé au fichier
c:\\temp\\test-file.txt",
\\\\127.0.0.1\\c\$\\temp\\test-file.txt",
\\\\LOCALHOST\\c\$\\ temp\\test-file.txt",
\\\\LOCALHOST\\c\$ \\temp\\test-file.txt",
\\\\.\\c:\\temp\\t\\est-file.txt",
\\\\?\\c:\\temp\\test-file.txt",
\\\\.\\UNC\\LOCALHOST\\c\$\\temp\\test-file.txt",
\\\\?\\UNC\\ServerName\\ temp\\test-file.txt",
\\\\127.0.0.1\\c\$\\temp\\test-file.txt"
\\\\?\\server1\\e:\\utilities\\\\filecomparer\\
C:/test\\gvk.hv/fgfjgjj bdsdfus(fg)
C:/test\\gvkhv/../fgfjgjjb/yfigfi
C:/test\\gvk.hv/fgfj.gjjb/uhloext C:/test\\gvk.hv/fgfj.gjjb/uhloext.ds
C:/test\\gvk.hv/fgfj.gjjb/uhloext C:/UNC/test\\gvk.hv/fgfj.gjjb/uhloext.ds
Site0 / 3: - Warning . See log file 'C:\\ProgramData\\InfoVista\\Planet 7.4\\7.4\\RPE\\Log\\Plugins\\Universal_Model_masked\\log_Universal_Model.txt' for details
C:/test\\gvk.hv/fgfj.gjjb/uhloext.ds.yi : gf
\\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau hgtfhyt "C:/te-st.html" "C:/te-st.html" gd"dhbcsk "C:/te/dsst.ikpo fdsf "C:\\test" "C:// test.html" gd
"//te s t/e, llo.html
C:/test\\f/uhlo/.
C://te?st.html
b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Custom Data"
; dfsdf "\\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Custom Data"
; dfsdf "\\\\
Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Building.* C: is invalid
Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo NetAct Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Building.TAB, is invalid
Haguenau_Building.tab : Data format of \\\\b-renice\\sauvegardes\\B-HIER\\GEO\\Geo_NetAct_Atoll_Planet\\UR_Est\\Polygon\\Haguenau\\Building\\Haguenau Buildi* ng.*, is invalid
C:/test/../hjgbkl C:/test/../hjgbkl.gfgdfgrdgfdgr C:/test/../hjgbkl
C:/test.html
C://test/ .h/hel,lo.html//test/./hello.html
C:/test//hello.html
//test
//hello.html
/test
"%tmp%/fsdfs"
%tmp%/fsdfs
ERROR 8/31/2021 - 6:45:39 PM HighResClutter .RasterFile : \\\\b-ren ice\\sauv egardes\\B-HIER\\GEO%dsq%\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil : Le fichier spécifié est introuvable.
\\\\b-ren ice\\sauv egardes\\..\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil C:\\b-ren ice\\sauv egardes\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JERSE..Y_New_York_2 m_Z18N_0_DTM_02_06.bil \\\\b-ren ice\\sauv egardes\\B-HIER\\GEO\\NewJersey_NewYork\\DTM\\DTM\\CENTRAL_JER SE.Y_New_York_2 m_Z18N_0_DTM_02_06.bil.
//test.html
\\\\10.1.1.107
//10.1.1.107/test.html
//10.1.1.107/te st/hello.html
//10.1.1.107/test/hello
//test/hello.txt
//test/hello.txt.
/test/html
/tes?t/html
/test.html
test.html
//
/
\\\\\\rged\\bfg
\\\\
/t!esrtr
C:/hel**o
\\\\.\\UNC\\Server\\Share\\Test\\Foo.txt
\\\\?\\UNC\\Server\\Share\\Test\\Foo.txt
Pour les chemins UNC de périphérique, la partie serveur/partage forme le volume. Par exemple, dans \\\\?\\server1\\e:\\utilities\\\\filecomparer\\ , la partie serveur/partage est server1\\utilities . Ceci est important quand
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions