2012-01-22 6 views
-1

の間の文字列を検索するための正規表現私はHTMLファイルいただきました>と<

...<b>Breakfast</b><hr>... 

を持って、私は><との間にあるBreakfastをしたいです。

私はどちらか>Breakfast<を与えていない

...for test_string in line: 
     if re.match(r'(>.*<$)',test_string):... 

を試してみました。

ありがとうございます。

+0

なぜ '$'をインクルードしましたか? – Cameron

+0

[""](http://stackoverflow.com/questions/3066328/whats-the-regular-expression-for-finding-string-between)の間の文字列を検索するための正規表現とは何ですか? –

+1

次のようなものです:http://www.crummy.com/software/BeautifulSoup/ –

答えて

3

$は「入力の終了」を意味し、この正規表現には属しません。

代わりに、次の手順を実行します。

m = re.search(r'>([^<]*)<', test_string) 
if m: 
    print m.group(1) 

これは、>を検索<ではありません、すべての次の文字、そして<。文字が><は、私はあなたがしたいと思うあなたはm.group(1)

+0

'[^ <]'の+1、 – Cameron

+0

このユースケースでは、 '[^ <] * <'は '。*?<'よりもどのように優れていますか?確かに、それらは内部的に同じコードに変換されます。 – kindall

+0

@kindall、まったく同じではありませんhttp://pastebin.com/Lp3axWWC – reclosedev

0

を使用して取得しグループとしてマークされているビトウィーンズ:

r'(>.*?<)' 

それとも

r'<b(>.*?<)/b>' 

非欲張りや試合であります文字列の真ん中。 parsing HTML with regular expressionsは非常に堅牢ではないことに注意してください。

4

一般に、正規表現はhtmlを解析できません。代わりにhtmlパーサを使用することができます:

from BeautifulSoup import BeautifulSoup # pip install BeautifulSoup 

html = """...<b>Breakfast</b><hr>...""" 

soup = BeautifulSoup(html) 
print soup(text=True) # get all text 
# -> [u'...', u'Breakfast', u'...'] 
print [b.text for b in soup('b')] # get all text for <b> tags 
# -> [u'Breakfast'] 
関連する問題

 関連する問題