使用Regex在Visual Studio Code中查找所有短语,以给定短语开头和结尾,然后在整个解决方案中将内容重命名为小写

时间:2018-12-08 16:57:49

标签: regex visual-studio-code

我想找到所有以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中的全局搜索将所有找到的出现更改为小写? 如果不可能的话,您能给我一些替代方法吗? 干杯

2 个答案:

答案 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="
  • ([^>]+)-匹配>以外的任何一个或多个时间。

Demo

  

工作代码演示

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本身,可以遵循以下步骤:-

  • Ctrl + H
  • Alt + R
  • 键入your regex
  • Tab 并输入$ 1。
  • Alt + Enter
  • F1 并键入较低的字母,然后按 Enter
  • Ctrl + Alt + Enter