2011-05-12 57 views
31

一次又一次我看到代碼中使用了$ 1和$ 2。這是什麼意思?你能舉個例子嗎?

+1

這可能對您有所幫助:[分組和反向引用](http://www.regular-expressions.info/brackets.html) – 2011-05-12 18:47:17

回答

30

創建正則表達式時,您可以選擇捕獲部分匹配並將它們保存爲佔位符。它們的編號從$1開始。

例如:

/A(\d+)B(\d+)C/ 

這將捕獲從A90B3C903。如果需要分組但不想捕獲它們,請使用(?:...)版本,而不是(...)

數字從括號開始的順序從左到右。這意味着:

/A((\d+)B)(\d+)C/ 

針對相同的字符串匹配將捕獲90B903

+0

謝謝。如果時間允許,我會接受這個答案。 – david 2011-05-12 18:50:52

+0

所以應該這樣工作:A(\ d +)B($ 1)C – 0x499602D2 2011-06-05 13:03:23

+0

它在Perl中,但我不認爲Ruby支持這種回溯。 – tadman 2011-06-06 14:30:58

5

這是特別的。用於Replacement String Syntax(即格式字符串)適用於查找案例/案例摺疊&替代。要引用捕獲,請使用$ n,其中n是捕獲寄存器編號。使用$ 0意味着整個比賽。示例:Find: (<a.*?>)(.*?)(</a>) Replace: $1\u$2\e$3

相關問題