Linux中國
正則表達式的分組和數字
大約一周前,我在編輯一個程序時想要更改一些變數名。我之前認為這將是一個簡單的正則表達式查找/替換。只是這沒有我想像的那麼簡單。
變數名為 a10、v10 和 x10,我想分別將它們改為 a30、v30 和 x30。我想到使用 BBEdit 的查找窗口並輸入:

我不能簡單地 30 替換為 10,因為代碼中有一些與變數無關的數字 10。我認為我很聰明,所以我不想寫三個非正則表達式替換,a10、v10 和 x10,每個一個。但是我卻沒有注意到替換模式中的藍色。如果我這樣做了,我會看到 BBEdit 將我的替換模式解釋為「匹配組 13,後面跟著 0,而不是」匹配組 1,後面跟著 30,後者是我想要的。由於匹配組 13 是空白的,因此所有變數名都會被替換為 0。
你看,BBEdit 可以在搜索模式中匹配多達 99 個分組,嚴格來說,我們應該在替換模式中引用它們時使用兩位數字。但在大多數情況下,我們可以使用 1 到 9 而不是