用于覆盖文件路径的JavaScript正则表达式
我想用gulp任务替换文件路径。为此,我需要编写一个正则表达式: 我有一个文件夹结构用于覆盖文件路径的JavaScript正则表达式,javascript,regex,gulp,Javascript,Regex,Gulp,我想用gulp任务替换文件路径。为此,我需要编写一个正则表达式: 我有一个文件夹结构。/assets/js/components/main/main.component.html,我需要用一个空字符串替换整个路径。/assets/js/components/**/。因此,在我的示例中应用正则表达式之后,我应该只得到html文件,例如:main.component.html 正则表达式应仅将路径。/assets/js/components/与一级子文件夹匹配,例如:。/assets/js/comp
。/assets/js/components/main/main.component.html
,我需要用一个空字符串替换整个路径。/assets/js/components/**/
。因此,在我的示例中应用正则表达式之后,我应该只得到html文件,例如:main.component.html
正则表达式应仅将路径。/assets/js/components/
与一级子文件夹匹配,例如:。/assets/js/components/**/
。仅包含。/assets/js/components/
的路径不应匹配,包含多个子文件夹的路径也不应包含。/assets/js/components/main/shouldnotmatch/
我已经写了一个正则表达式:
这里的问题是,它选择了一切。你知道怎么解决这个问题吗
编辑:
更多示例:
。/assets/js/components/main/=>../assets/js/components/main/
../assets/js/components/=>不应匹配
../assets/js/components/test/index.html=>../assets/js/components/test/
../assets/js/components/main/shouldnotmatch/shouldnotmatch.html=>../assets/js/components/main/
../assets/js/components/some_components.html=>不应匹配
../assets/js/components/1.html=>不应匹配
在子文件夹
的位置使用时,似乎要避免匹配HMTL/HTM文件
您可以使用前瞻来添加该限制并使用
^\.\.\/assets\/js\/components\/(?![^\/]+\.html?$)[^\/]+\/?
见
详细信息
-字符串的开头^
-2点\.\.
-一个文本字符串\/assets\/js\/components\/
/assets/js/components/
-在当前位置的左侧,不能有:(?![^\/]+\.html?$)
-1个或多个字符,而不是[^\/]+
/
-\.html?
或.html
htm
-在字符串末尾$
-1个或多个字符,而不是[^\/]+
/
-1或0\/?
s/
注意,您可以使用^\.\.\/assets\/js\/components\/([^\/]+\/?)$
并确保在代码中引用组1值。请注意,在演示中,必须将\n
放入[^\/]
中,以避免跨行匹配。请参见@WiktorStribiżew,但它只选择第一个。它应该在任何地方选择。/assets/js/components/***/
。@Gabriel很抱歉,它应该匹配shouldnotmatch.html
?现在,它变得相当不清楚了。@DNKROZ你刚才犯了两个错误:)加布里埃尔,检查。甚至可能