2016-11-09 4 views
0

Ich habe dieses HTMLPython re.sub nicht wie erwartet funktioniert

b>Source: </b> <a href=\'http: //website.com/ml/datasets/Iris\'>text here</a><br><p class="normal">Creator: R.A. Fisher 
<br><br>Donor: Namehere <b>\'@\'</b> website.com</u>)</p> 

Ich möchte mehrere entfernen <br> aus dieser Regex mit

Ich bin mit diesem _str = re.sub('<br>\s*','<br>',_str)

Aber es gibt String als Es war, ohne Veränderung.

Wenn ich gleiche Regex verwenden, aber einen anderen ersetzen Charakter dann funktioniert es, diese _str = re.sub('<br>\s*','',_str)

+2

Ihr regexp bedeutet „Ersetzen'
' Tags gefolgt von Leerzeichen mit '
' ". Es enthält keine Vorstellung von "multiple'
'". Effektiv ersetzt Ihre Regexp alle Instanzen von '
' durch '
', so dass Sie offensichtlich keinen Unterschied sehen. –

+0

Entschuldigung, ich habe Sie nicht @VincentSavard ... Ich möchte mehrere existInce von
mit einem
... – Umair

+0

ersetzen Ich verstehe, was Sie wollen. Was ich dir sage, ist, dass du nicht geschrieben hast. Sie müssen zuerst Ihre Regexp korrigieren. –

Antwort

1

Sie sind nur Abstreifen Leerzeichen nach <br> damit angeben. Sie können stattdessen eine positive Vorschau verwenden, um alle <br> s zu entfernen, die eine andere <br> sofort haben folgende:

re.sub(r'<br>(?=<br>)', '', _str) 

Sie unter behandeln können <br> Räume mit:

re.sub(r'<br>(?=\s*<br>)', '', _str) 
+0

Akzeptiert, wäre eine kleine Erklärung der Regex arbeiten groß ... danke anyways – Umair

+0

Hier: [* positive Lookahead Assertion *] (http://www.rexegg.com/regex-lookarounds.html) –