2012-04-25 131 views
3

我沒有使用編碼語言。這必須是直的正則表達式。在兩個字符串之間添加變量空格

我需要在兩個字符串之間添加一個可變長度的空白。我傳遞給正則表達式的字符串有字符串本身的空格的數量,將需要更換:

string1 *27* string2 

,所以我需要插入27個空格到字符串1和字符串2

\*(\d+)\* 
之間的串

這是我的捕捉,它似乎是工作,但我想設置我的這種替換:

\s{$1} 

或本:

$&\s{$1} 

那麼你會怎麼做呢?我正在使用expresso進行驗證,但並非所有正則表達式都被我使用的文本引擎支持。

回答

1

這是不可能的直正則表達式。正則表達式需要某種解析功能來使用捕獲的變量並將其翻譯爲重複的空格。

你想替換工作的方式也是不可能的。由於正則表達式的替換部分是一個直接的文本替換,而不是另一個正則表達式評估器......它會是一種很酷有一個遞歸正則表達式雖然:)

+0

啊,這就是我要怎樣做:捕捉內線號碼,並把它作爲數字爲#空白的補充。 – ecathell 2012-04-26 13:18:14

+0

@ecathell對不起,這是更具編程性,而不是如何正則表達式工作 – 2012-04-26 14:21:18

0

一種方法使用perl香味正則表達式:

perl -e ' 
    $s = q[string1 *27* string2]; 
    $s =~ s/\s+\*(\d+)\*\s+/" " x $1/e; 
    print $s 
' 

輸出:

string1       string2 
+0

正如我所說的使用任何編碼語言是不可能在我的情況。 – ecathell 2012-04-26 13:19:08

相關問題