2010-07-19 17 views
6

bir dize sonunda bir tamsayı artırma:aşağıdaki biçimde bir dize var perl'de

\main\stream\foo.h\3 

daha az ya da "bölümleri" olabilir, ama her zaman bir takip eğik çizgiyle sona erecek tamsayı. Diğer örnekler şunlardır:

\main\stream2309\stream222\foo.c\45 

\main\foo.c\9 

Ben, Perl, dizenin sonundaki sayıyı artırmak ve yalnız kalan bırakmak gerekir. Bu sitede, tam olarak ne yapmak istediğimi yapan bir örnek buldum (bkz. Increment a number in a string in with regex) sadece dil Javascript. Verilen çözüm şu şekilde oldu: Perl'de aynı şeyi yapmam gerekiyor.

cevap

10

Değiştirilebilir kodunuzu yedek dizenize koymak için /e regex değiştiricisini kullanabilirsiniz. gibi

şey:

$string =~ s/(\d+)$/$1 + 1/e; 

çalışmalıdır.

+1

bir çekicilik gibi çalıştı! Teşekkürler. – user396162

+1

Çok kötü otomatik artış,/^ [a-zA-Z] * [0-9] * \ z/'ile eşleşen dizelerle sınırlıdır –

3

$var =~ s/(\d+$)/($1 + 1)/e

İlgili konular