^
1 N23456
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
.* (.).*
$1
Kullanır uve dyukarı ve aşağı.
Çevrimiçi deneyin!
açıklama
Bu program 1N23456komutların sırasını geride tutarak çalışır . Arkasında bir boşluk bırakarak mevcut dişliyi takip eder. Sonra bir daha bir şey olmaz, bir daha bitene kadar.
^
1 N23456
Girişten 1 N23456önce koyarak başlayın . Önündeki boşluk , o anki dişli Nolduğunu gösterir N.
+(` (.)?(\w*6)u
$1 $2
)`(.)? (\w*6)d
$1$2
Bunlar iki değiştirme aşamasıdır, birlikte gruplandırılmış ve dizeyi değiştirmeyi bırakana kadar devam eder:
(.)?(\w*6)u
$1 $2
İlki, vitesi yukarı kaydırırken işler. Boşluktan sonra herhangi bir sayıda vites arayacak, ardından a 6, ardından takip edecektir u( uvites yükseltme talimatını gösterir). 6'dan önce karakterler varsa, boşluktan hemen sonra karakterin bulunduğu alanı değiştirir, siler uve dizenin geri kalanını bozulmadan bırakır. Yana 6maçında zorunludur, sadece daha önce herhangi bir karakter boşluk takas edecek 6. Asla değişmeyecek 6.
(.)? (\w*6)d
$1$2
İkinci kademe, vitese geçişi gerçekleştirir ve benzer şekilde çalışır. İsteğe bağlı olarak boşluktan önce bir karakter arar, ardından bittikten sonra diğer bazı dişliler 6ve onu takip eder d. Boşluktan önce karakteriyle değiştirir, siler dve gerisini sağlam bırakır. Boşluk dize başındaysa, boşluktan önce bir karakterle eşleşme olmadığından takas oluşmaz.
.* (.).*
$1
Yukarıdaki değişikliklerin hiçbiri artık yapılamadığında, tüm vites değişimleri tamamlanmıştır. Satır, boşluktan hemen sonra dişli hariç her şeyden temizlenir. Bu son vites.