2015-01-20 38 views
0

方案雞肉正則表達式邏輯分組

(use extras format posix posix-extras regex regex-literals utils srfi-1) 

有正則表達式與邏輯分組1和2

/^(\\W+)\\s+(\\W+)/ 

但我有與語法的麻煩實際上-use- 1和2。 我應該使用$ 1 $ 2,還是\ 1和\ 2或其他?我將在與正則表達式本身相同的LOC上使用 1和2。

由於提前,

還是學習史蒂夫

回答

0

這個問題是舊的,但也不是特別清楚:你不解釋你如何試圖使用正則表達式。無論如何,我會試着回答它。

首先,在Perl或Ruby中沒有「特殊」變量$1$2。隨着這一點,如何使用各種程序變得簡單。

例如,string-match,你只是收到一個匹配的列表:

#;1> (use regex regex-literals) 
#;2> (string-match #/b(a)(r)/ "bar") 
("bar" "a" "r") 

因此,指第N子匹配你會用(list-ref the-match N)(其中0等於完全匹配的字符串)。

隨着string-substitute和正則表達式中使用反向引用的時候,你會使用"\\1"(你必須使用兩個反斜線逃避串上下文中的反斜槓):

#;1> (use regex regex-literal) 
#;2> (string-substitute #/f(o)(\1)/ "lala\\2xyz" "foo") 
"lalaoxyz" 

這工作一般,但有一個沒有記錄的特性(或者一個bug),如果你在替換中的轉義序列前面使用反斜線,它將被轉義。請參閱this bugreport關於如何工作,以及如何使用irregex而不是正則表達式來避免這種情況。