2011-06-07 855 views
2

有正則表達式,可以指示它自動增量它的替代品,無論是數字或字母的字符串。正則表達式替換自動遞增

謝謝

例如,我有一個字符串應該是數字1, 2, 3, 4, 5但他們目前編號爲1, 1, 1, 1, 1

我如何將取代那些5個個人,相似的字符串數爲1, 2, 3, 4, 5

+1

你能提供一個你正在尋找的自動增量的例子嗎?此外,正則表達式語法不是通用的;你會用什麼語言? – 2011-06-07 00:04:04

+0

我使用TextWrangler的grep/regex,示例中加入 – CQM 2011-06-07 00:10:53

+0

@RD,謝謝。據的TextWrangler的文檔,他們使用Perl-Compatable正則表達式(PCRE) – 2011-06-07 00:12:54

回答

4

我不熟悉TextWrangler的語法;但是,它使用pcre所以這應該是你想要的,只要你有辦法來分配初始值,您遞增變量(在這種情況下,我用$ii)什麼......下面的腳本替換「pizza-出現的任何X」與 「比薩-0」, 「比薩-1」 ...

@foo = ('pizza', 'pizza-a', 'pizza-b', 'pizza-c'); 
$ii = 0; 
foreach (@foo) { 
    $_ =~ s/(pizza-)[a-z]/"$1".$ii++/e; 
    print "$_\n"; 
} 

結果...

[[email protected] Desktop]$ perl foo.pl 
pizza 
pizza-0 
pizza-1 
pizza-2 

的魔力來自s///e;$ii++;請確保將非遞增字符串括在引號中並與句點連接。

或者,只是做你的自動遞增與perl -pi -e '$ii = 0; s/something/"here".$ii++/e重整`直接在文本文件(做一個備份副本,當然)。