2016-03-21 22 views
-3

Böyle bir kod var.Python'da Düzenli İfadelerin Oluşturulması

<td class="check ABCD" rowspan="2"><center><div class="checkbox {{#if checked}}select{{else}}deselect{{/if}}" id="{{id}}" {{data "tool"} 

<td class="check" rowspan="2"><center><div class="checkbox {{#if checked}}select{{else}}deselect{{/if}}" id="{{id}}" {{data "tool"}}> 

Ve yukarıdaki kodda yalnızca sınıf ve kimlik adı ayıklamak istiyorum. Python'da düzenli ifadeyi kullanmayla ilgili çok az bilgiye sahibim.

Düzenli ifade kullanarak yalnızca sınıf adı & kimlik adı ("" arasındakiler) adını nasıl alabilirim? ya da bunu yapmak için daha iyi bir yolu var mı? Evet ise, lütfen bana yardımcı olun :)

Şimdiden teşekkürler. Eğer Python bir Regex çözüm istedi yana

+0

Daha iyi bir şeye sahip olmalısınız: Bu durum normal ifadelerle yapılmalı mı? – idjaw

+0

@idjaw Ayıklamak için başka bir yolu var mı? Regex'ten başka? –

+1

Bunun çok daha büyük bir veri parçasının parçası olup olmadığını bilmiyorum. Ama bu kesinlikle HTML gibi gözüküyor ve eğer bunu ayrıştırmaya çalışıyorsanız, [BeautifulSoup] (https://pypi.python.org/pypi/beautifulsoup4) – idjaw

cevap

2

, birini alırsınız:

import re 
p = re.compile(ur'^.+?class="([^"]+)".+id="([^"]+)".+?$', re.MULTILINE) 
test_str = u"<td class=\"check ABCD\" rowspan=\"2\"><center><div class=\"checkbox {{#if checked}}select{{else}}deselect{{/if}}\" id=\"{{id}}\" {{data \"tool\"}\n<td class=\"check\" rowspan=\"2\"><center><div class=\"checkbox {{#if checked}}select{{else}}deselect{{/if}}\" id=\"{{id}}\" {{data \"tool\"}}>" 

re.findall(p, test_str) 

buraya üzerinden canlı örneğe bakın: https://regex101.com/r/cG8dC5/1

Bununla birlikte, bazı diğer kullanıcıların zaten belirtildiği gibi. Regex isn't ideal for parsing (x) HTML. https://pypi.python.org/pypi/beautifulsoup4

+0

Biriyle düzenli olarak HTML'yi ayrıştırmamanızı ve bir çözüm göndermemesini tavsiye ettiğinizde, bu durum bir şekilde röportaj yapmaz;)? – Jan

+2

Hayır. Bu sorunun cevabı. Yardımcı bir tavsiye ile. Bana sorarsan: "Bir mercekle nasıl ateş edilir?" Size cevap vereceğim - güneş ile saman arasında tutun. Yine de, en iyi yol değil. Çakmağı kullan. Bu yüzden onun sorusu için geçerli bir yanıt olduğunu düşünüyorum ve ona söylediğim gibi, daha iyi yollar olduğunu, bunun gizlenmediğini. – netblognet

+0

Yangın benzetimini beğendim (bunun için +1), ancak onu daha hafif aldım :) – Jan

İlgili konular