我想找到所有以href="
开始并以"
结尾的地方
符合条件:
<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>
<li><a href="../Foo/Index.html">Foo</a></li>
重命名后的预期结果
<li><a href="blah/index.html">Blah</a></li>
<li><a href="/blah/index.html">Blah</a></li>
<li><a href="../blah/index.html">Blah</a></li>
<li><a href="../foo/index.html">Foo</a></li>
我构建的正则表达式不起作用:
^href".*\."$
我不知道是否有可能使用VS Code中的全局搜索将所有找到的出现更改为小写? 如果不可能的话,您能给我一些替代方法吗? 干杯
答案 0 :(得分:3)
Visual Studio Code正则表达式不支持替换模式中的大小写修改运算符。
在Notepad ++中,您可以使用类似
查找:(href=")([^"]*\.[^".]+)(")
替换:$1\L$2\E$3
请参见this demo。
详细信息
(href=")
-第1组:href="
子字符串([^"]*\.[^".]+)
-第2组:
[^"]*
-除"
以外的0多个字符\.
-一个点[^".]+
-除"
和.
以外的1个以上的字符(")
-第3组:双引号。 $1\L$2\E$3
替换模式会插入第1组的值,然后\L
运算符告诉正则表达式引擎打开小写字母,$2
因此以小写形式插入,\E
停止小写输出,然后$3
添加第3组的值。
如果您不需要检查href
值是否包含点,则可以将正则表达式简化为(href=")([^"]+)(")
。
答案 1 :(得分:0)
您可以尝试
\bhref="([^>]*)
说明
\b
-单词限制。href="
匹配href="
。([^>]+)
-匹配>
以外的任何一个或多个时间。工作代码演示
const regex = /\bhref="([^>]+)/gm;
const str = `<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>`;
let op = str.replace(regex,(match,p1)=>p1.toLowerCase());
console.log(op);
如果您想进行替换,也可以使用vscode本身,可以遵循以下步骤:-
your regex
。