7

Python での Regex に関するチュートリアルでは、Python で re モジュールを使用する方法を説明しています。A タグから URL を取得したかったので、正規表現を知っていたので、正しい式を書き、選択した正規表現テスト アプリでテストし、それを確認しました。働きました。Pythonに配置すると失敗しました。

多くの頭を悩ませた後、私は問題を発見しました。パターンが文字列の先頭にあると自動的に想定します。修正を見つけましたが、変更方法を知りたいです:

regex = ".*(a_regex_of_pure_awesomeness)"

の中へ

regex = "a_regex_of_pure_awesomeness"

わかりました、これは標準の URL 正規表現ですが、何を削除したいのか、おかしなふりをする可能性について混乱を招く可能性を避けたかったのです。

4

4 に答える 4

20

Python では、「一致」と「検索」が区別されます。match は文字列の先頭にあるパターンのみを検索し、search は文字列内の任意の位置から始まるパターンを検索します。

Python 正規表現ドキュメント
マッチングと検索

于 2008-09-16T13:53:03.187 に答える
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']
于 2008-09-16T22:44:42.987 に答える
3
>>> import re
>>> pattern = re.compile("url")
>>> string = "   url"
>>> pattern.match(string)
>>> pattern.search(string)
<_sre.SRE_Match object at 0xb7f7a6e8>
于 2008-09-16T13:54:56.363 に答える
1

re.match()またはre.search()メソッドを使用していますか?私の理解では、式の先頭にre.match()「」を想定し^、テキストの先頭でのみ検索しますが、Perlの正規表現のように機能し、テキストの先頭に「 」re.search()を含めるとテキストの先頭にのみ一致します。^あなたの表現の始まり。お役に立てば幸いです。

于 2008-09-16T13:52:02.220 に答える