İki dizge arasında oluşan metni çıkarmak için regex'i kullanmak istiyorum. Her seferinde aynı dizgiler arasında (ve örneğin Regex matching between two strings?'u soran sayısız soru) ayıklamak istediğimi biliyorum, ancak bunu değiştiren değişkenleri kullanarak yapmak istiyorum ve Regex içinde özel karakterler de içerebilirler. (Herhangi bir özel karakter istiyorum, örneğin * metin olarak kabul edilir). Örneğinİki dizge arasında ayıklamak için regex (değişkenler)
i olsaydı:
text = "<b*>Test</b>"
left_identifier = "<b*>"
right_identifier = "</b>
i Aşağıdaki kod olmanın vadede yol açacağı regex kodu oluşturmak isteyeyim:
re.findall('<b\*>(.*)<\/b>',text)
Ben don <b\*>(.*)<\/b>
parçasıdır' Dinamik olarak nasıl yaratılacağını bilir.
geri düşmek tavsiye eder: (.? *) '' Bu mümkün olduğunca az karakterle eşleşir. "{left_identifier} öğe {right_identifier} {sol tanımlayıcı} daha fazla öğe {right_identifier}" gibi bir dize durumunda, "stuff {right_identifier" yerine iki ayrı maçta yalnızca "stuff" ve "daha fazla şeyler" bulacaksınız } {sol tanımlayıcı} daha fazla öğe "bir maçta. – Shashank
Teşekkürler - iyi nokta - haklısın - açgözlü olmayan niceleyici demek istediğim buydu! – kyrenia
Lütfen HTML'yi ayrıştırmak için regex kullanmanın [önerilmez] olduğunu unutmayın (http://stackoverflow.com/a/1732454/405017). Bir HTML ayrıştırıcısı kullanmalısınız (Python'un [Nokogiri] (http://nokogiri.org) eşdeğeri ne olursa olsun) ve sonra uygun etiketlerden metin ayıklamanız gerekir. – Phrogz