2008-09-16 7 views
6

を「再」私はPythonで正規表現で持っているチュートリアルでは、Pythonで再モジュールを使用する方法について説明しますが、私はので、私は正しい式を書いて、私の中でそれをテストして正規表現を知っているタグの外にURLをつかむしたいです正規表現のテストアプリを選択し、それが動作するようにしました。 Pythonに置かれたとき、それは失敗しました。私は、問題を見つけた多くのヘッドが傷後Pythonと

は、それが自動的にあなたのパターンは、文字列の先頭であることを期待します。私は修正を発見したが、私は変更する方法を知りたいのです:

regex = ".*(a_regex_of_pure_awesomeness)" 

regex = "a_regex_of_pure_awesomeness" 

オーケー

に、それが標準URL正規表現だが、私は私が何を望むかについての混乱を避けたかったですおそらく面白くなるふりをし、おそらくふりをする。

答えて

19

Pythonには、 "match"と "search"の区別があります。 matchは文字列の先頭のパターンのみを検索し、検索は文字列内の任意の場所から始まるパターンを探します。

Python regex docs
Matching vs searching

1

re.match()またはre.search()メソッドを使用していますか?私の理解では、re.match()は式の先頭に "^"を置き、re.search()はPerlの正規表現のように機能し、最初の部分にのみ一致します式の先頭に "^"を含めると、テキストの希望が役立ちます。

3
>>> import re 
>>> pattern = re.compile("url") 
>>> string = " url" 
>>> pattern.match(string) 
>>> pattern.search(string) 
<_sre.SRE_Match object at 0xb7f7a6e8> 
1

おそらく、異なる方法のre.searchとre.matchに巻きトリップされています。

4
from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(your_html) 
for a in soup.findAll('a', href=True): 
    # do something with `a` w/ href attribute 
    print a['href']