宝哥软件园

详细解释可以在VS代码中使用的正则表达式技巧

编辑:宝哥软件园 来源:互联网 时间:2021-08-24

你有没有一直想学正则表达式,但是因为复杂而耽误了?在本文中,我将向您展示五种易于学习的常规技能,您可以立即在您最喜欢的文本编辑器中使用它们。

文本编辑器设置

虽然现在几乎所有的文本编辑器都支持正则表达式,但是我在本教程中使用了Visual Studio Code,但是您可以使用任何您喜欢的编辑器。还要注意,您通常需要在搜索输入框附近的某个地方打开RegEx开关。下面是如何在VS代码中做到这一点:

您需要通过选中该选项来启用正则表达式

1).—匹配任何字符

我们开始吧。点符号。用于匹配任何字符:

英国电信

上面的正则表达式匹配“bot”、“bat”和任何以b开头、以t结尾的三个字符的单词。但是,如果您想搜索点符号,您需要用”对其进行转义,因此下面的正则表达式只匹配精确的文本“b.t”:

b。

2).*-匹配任何东西

给你。表示“任何字符”,*表示“此符号重复前面的内容任何次数。”把它们放在一起。*)表示“任何符号重复任何次数。”例如,您可以使用它来查找以某些文本开头或结尾的匹配项。假设我们有这样一个javascript方法

Loadscript(脚本名:字符串,pathToFile :字符串)我们想找到这个方法的所有调用,其中文件路径指向文件夹“lua”中的任何文件。可以使用以下正则表达式:

LoadScript。*lua这意味着,“匹配所有以‘loadscript’开头、以‘Lua’结尾的字符串。”

3) ?-非贪婪匹配

之后。*?符号和其他匹配规则意味着“尽可能少的匹配”。在上图中,每次匹配都会获得两次“lua”字符串,第二次“lua”中的所有内容都无法完全匹配。如果要匹配“lua”的第一次出现,可以使用以下正则化:

loadScript。*?Lua的意思是,“匹配所有以‘loadScript’开头,后面跟任何字符的字符,直到‘Lua’第一次出现。”

loadScript。*?lua:匹配以loadScript开头的所有内容,直到第一次出现“Lua”

4)`()# # #-捕获组和反向引用

好了,现在我们可以匹配一些单词了。但是如果我们想修改一些我们找到的文本呢?这就是使用捕获组的时候。

假设我们修改了loadScript方法,现在我们需要在它原来的两个参数之间插入另一个参数。让我们命名这个新的参数id,那么新的函数原型应该如下:loadScript(scriptName,id,pathToFile)。我们在这里不能代替文本编辑器的正常功能,但是正则表达式可以帮助我们。

通过上图可以看到运行以下正则表达式的结果:

loadScript(。*?*?)这意味着:“匹配任何以‘loadScript’开头的内容(然后是任何内容,直到满足第一个,然后是任何内容,直到第一个)”

对你来说,唯一奇怪的是符号。它们用于转义括号。

因为符号(和)是正则表达式用来捕获匹配文本部分的特殊字符,所以我们需要匹配实际的括号字符,所以我们需要转义它们。

在前面的表达式中,我们使用了。*?符号定义了方法调用的两个参数。要使每个参数成为单独的捕获组,您需要在它们的前后添加(和)符号:

loadScript(。*?),(.*?))如果您运行此常规,您将看不到任何变化。这是因为它匹配相同的文本。但是现在我们可以调用第一个参数$1和第二个参数$2。这叫做反向引用,它将帮助我们做我们想做的事情:在两个参数之间添加另一个参数:

搜索输入:

loadScript(。*?),(.*?))这与前面的正则化相同,但是参数分别映射到反转的捕获组1和2。

替换输入:

LoadScript($1,id,$2)这意味着“将每个匹配的文本替换为文本‘LoadScript’(即捕获组1、id、捕获组2和)”。请注意,您不需要在替换输入中转义括号。

5)[]-字符类

您可以在[和]符号的特定位置列出要匹配的字符。例如,[0-9]匹配从0到9的所有数字。你也可以把所有的数字都列清楚:[0123456789] ——和上一个意思一样。您也可以在字母中使用破折号。[a-z]将匹配所有小写拉丁字符,[A-Z]将匹配所有大写拉丁字符,[a-zA-Z]将同时匹配两者。

也可以在字符类后使用*号,就像after一样。在这种情况下,它意味着“匹配该类中的任意数量的字符”

附言

你应该知道写正则表达式有几种方法。我这里说的是javascript RegEx引擎。大多数现代发动机都相似,但可能有一些不同。通常,这些差异包括转义字符和反向引用标记。

您现在可以打开文本编辑器,并立即开始使用一些技术。您将看到许多重构任务可以比以前更快地完成。一旦掌握了这些技巧,就可以开始学习更多的正则表达式了。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+