Perl'de, bir oyuncu değişikliği yapmak ve aynı zamanda bir grup maçı yapmak benim için mümkün. Örneğin.Python'da re.sub'taki Grup Maçı alın
my $string = "abcdef123";
$string =~ s/(\d+)//;
my $groupMatched = $1; # $groupMatched is 123
Python'da, aşağıdaki gibi re.sub işlevini kullanarak ikameyi yapabilirim. Ancak, başka bir işlev re.match çağırmadan ve ek bir işlem yapmadan \ d + grup eşleşmesini yakalamanın bir yolunu bulamıyorum.
string = "abcdef123"
string = re.sub("(\d+)", "", string)
herkes aynı re.sub operasyonundan ayrı değişken olarak "\ d +" eşleşti değerini yakalamak nasıl biliyor mu? Aşağıdaki komutu denedim ve işe yaramıyor.
print r'\1'
Bunun mümkün olup olmadığından emin değilim (en azından aynı zamanda) çünkü "re.sub" öğesinin dönüş nesnesi bir dizedir. Eğer böyle bir şey varsa, rx_obj = re.search ('123 $', another_string) ', rx_obj.group()' ile yakalanabilen bir RE nesnesi alırsınız. – maxie
Sanırım ikisinin de aynı anda yapılması mümkün değil. Diğer yollar biraz hackish ya da temelde iki ayrı adım gibi görünüyor. – KT8
Perl'de, özel numaralı değişkenleri kullanmadan önce eşleşmenin başarılı olup olmadığını her zaman doğrulamanız gerektiğini unutmayın: eğer if ($ str = ~ s/(\ d +) //) {$ x = $ 1; } ' – stevieb