相關推薦:《vscode教學》
#你是不是一直都想學正規表示式,但因為它的複雜性而被推遲了?在本文中,我將向你展示五個易於學習的正規技巧,你可以立即在自己喜歡的文字編輯器中使用它們。
雖然現在幾乎所有的文字編輯器都支援正規表示式,但我在本教學課程中使用的是Visual Studio Code,不過你可以使用任何你喜歡的編輯器。另請注意,你通常需要在搜尋輸入框附近的某處打開 RegEx 開關。以下是在VSCode 中執行此操作的方法:
你需要透過選取此選項啟用RegEx
.
— 匹配任何字元讓我們開始吧。點符號.
用來匹配任何字元:
b.t
#上面的正規符合"bot"
,`" bat"
和任何以b
開頭、t
結尾的三個字元的單字。但是如果你想搜尋點符號,則需要用\
來對它進行轉義,所以下面這個正規只匹配確切的文字"b.t"
:
b\.t
.*
— 符合任何東西這裡.
表示「任何字元」, *
表示「此符號重複前面那個內容任何次數。」 把它們放在一起(.*
)表示 「任何符號重複任意次數。」 例如,你可以用它來尋找以某些文字開頭或結尾的匹配項。假設我們有一個這樣的 javascript 方法:
loadScript(scriptName: string, pathToFile: string)
我們想找到這個方法的所有調用,其中 pathToFile
指向資料夾「lua」
中的任何檔案。可以使用以下正規表示式:
loadScript.*lua
這意味著,「匹配所有以"loadScript"
開始同時以"lua"
結束的字串。」
?
— 非貪婪的配對. *
之後的?
符號和其他一些匹配規則意味著「盡可能少的匹配」。在上一張圖中,每次配對都會得到兩次 "lua"
字串,直到第二個 "lua"
所有東西才能全部匹配完畢。如果你想要匹配第一次出現的"lua"
,可以使用以下正規則:
loadScript.*?lua
這意味著,「符合所有以"loadScript"
開頭,後面為任意字符,直到第一次出現"lua"
#loadScript.*?lua
:符合以loadScript 開頭的所有內容,直到第一次出現"lua"
假設我們修改了
loadScript#方法,現在需要在它原來的兩個參數之間插入另外一個參數。讓我們把這個新參數命名為
id,這時新的函數原型應如下所示:
loadScript( scriptName,id,pathToFile)
loadScript\(.*?,.*?\)
「符合以
"loadScript(" 開頭的, 後面跟任何內容,直到遇到第一個
, ,然後是任意內容,直到第一個
)”#對你來說,可能看唯一起來比較奇怪的是
\
因為符號
(和
)
在前面的表达式中,我们使用.*?
符号定义了方法调用的两个参数。要使每个参数作为单独的捕获组,需要在它们的前后分别添加(
和)
符号:
loadScript\((.*?),(.*?)\)
如果你运行这段正则,你将看到没有任何变化。这是因为它匹配的是相同的文本。但现在我们可以将第一个参数称为\$1
,将第二个参数称为\$2
。这称为反向引用,它将帮助我们做自己想要的事情:在两个参数中间添加另一个参数:
搜索输入:
loadScript\((.*?),(.*?)\)
这与之前的正则相同,但分别将参数映射到倒了捕获组1和2。
替换输入:
loadScript($1,id,$2)
这意味着“用文本"loadScript("
、捕获组1、"id"
、捕获组2和 )
替换每个匹配的文本 ”。请注意,你不需要在替换输入中转义括号。
[ ]
— 字符类你可以在 [
和 ]
符号内来列出要在特定位置匹配的字符。例如,[0-9]
匹配从0到9的所有数字。你还可以明确列出所有数字:[0123456789]
—— 与前面的含义相同。你也可以使用带字母的破折号,[a-z]
将匹配所有小写拉丁字符,[A-Z]
将匹配所有大写拉丁字符,[a-zA-Z]
将会匹配两者。
你也可以在字符类之后使用 *
,就像在 .
之后一样,在这种情况下意味着:“匹配此类中任意数量的字符”
你应该知道有几种正则表达式的写法。我在这里讨论的是 javascript RegEx 引擎。大多数现代引擎都很相似,但也可能会存在一些差异。通常这些差异包括转义字符和反向引用标记。
你现在就可以打开文本编辑器,立即开始使用其中的一些技巧。你将看到可以比以前更快地完成许多重构任务。一旦你掌握了这些技巧,就可以开始研究更多的正则表达式了。
英文原文地址:https://medium.freecodecamp.org/simple-regex-tricks-for-beginners-3acb3fa257cb
译文地址:https://segmentfault.com/a/1190000019171886?utm_source=sf-related
更多编程相关知识,请访问:编程学习!!
以上是5個VSCode中易於學習的正規表示式小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!