Örneğin, "2 x 4" gibi dönüştürmek istediğim çok sayıda ürün boyutuna sahip bir metin var. Ben ne yapmak istediğinizi tarif etmeninDüzenli olarak yinelenen değiştiriyor gibi regex'in tüm yinelemelerini nasıl değiştirilir?
pattern = r"([0-9])\s*[xX\*]\s*([0-9])"
re.sub(pattern, r"\1 xby \2", "2x4")
'2 xby 4' # good
re.sub(pattern, r"\1 xby \2", "2x4x12")
'2 xby 4x12' # not good. need this to be '2 xby 4 xby 12'
bir yolu artık değiştirmeler yapılabilir kadar değiştirilmesini tekrarlamak olduğunu. Örneğin, ben sadece yukarıdaki değiştirilmesi için iki kez
x = re.sub(pattern, r"\1 xby \2", "2x4x12")
x = re.sub(pattern, r"\1 xby \2", x)
'2 xby 4 xby 12'
istediklerini elde etmek olabilir Ama zaten vardır
Eğer çalışıyorsanız bu yana
Sanırım cevabı aldığımı düşündüğümde bunu daha çok seviyorum. Değiştirmeler, soldan sağa doğru yapıldığından bu yana almalısınız. – NickT
Teşekkürler. Bunun ne yaptığını gevşek bir şekilde açıklayabilir misiniz? Doğru görünüyor, ama nedenini tam olarak anlamadım. – Ben
Yanıtta lookahead bir açıklama ekledim. – anubhava