2016-08-19 13 views
0

私は正規表現でかなり新しいです。基本的には、正規表現を使用して文字列から<sup> ... </sup>を削除したいと思います。Pythonでhtmlタグと文字列を削除します

入力:

<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup> 

出力:

<b>something here</b>, another here 

はそれを行う方法についてのその短い道と説明ですか?

この質問は重複する可能性があります。私は試しましたが、解決策が見つかりませんでした。

+3

正規表現はhtmlを処理する方法ではありません.htmlパーサーを使用してください。 htmlは単純な文字列ではなく、構造化されたデータです。最も使いやすいのはbeautifulsoupですが、それはあなたが使うことができるより効率的なライブラリのための唯一のラッパーです。 –

+0

私は上記のような短い文字列のリストを持っています。私は正規表現を使用してhtmlパーサーを使用せずに動作すると思います – titipata

答えて

1

難しい部分をタグ間のマッチを最小限にするよりも最小限にする方法を知っています。これは機能します。

import re 
s0 = "<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup>" 
prog = re.compile('<sup>.*?</sup>') 
s1 = re.sub(prog, '', s0) 
print(s1) 
# <b>something here</b>, another here 
+0

同じ答えでRyanによって殴られました。 –

+0

ありがとう@テリー。それは完全に良いです:) – titipata

1

あなたはこのような何かを行うことができます:

import re 
s = "<b>something here</b><sup>1</sup><sup>,3</sup>, another here<sup>1</sup>" 

s2 = re.sub(r'<sup>(.*?)</sup>',"", s) 

print s2 
# Prints: <b>something here</b>, another here 

(.*)として、(.*?)を使用することを忘れないでください、彼らは貪欲数量詞を呼んで、あなたは異なる結果得られるでしょう:

s2 = re.sub(r'<sup>(.*)</sup>',"", s) 

print s2 
# Prints: <b>something here</b> 
+0

ありがとう@ライアン、これは私が探しているものです。 – titipata

関連する問題