0

私は初めてPythonで作業しており、Mechanizeを使用してBeautifulSoupと一緒にWebサイトを検索し、特定のdivを選択しました。現在、正規表現を使用して特定の文を取得しようとしています。これは、スープオブジェクトの内容です。

    <div id="results">
   <table cellspacing="0" width="100%">
     <tr>
       <th align="left" valign="middle" width="32%">Physician Name, (CPSO#)</th>
       <th align="left" valign="middle" width="36%">Primary Practice Location</th>
       <!-- <th width="16%" align="center" valign="middle">Accepting New Patients?</th> --> 
       <th align="center" valign="middle" width="32%">Disciplinary Info  &amp; Restrictions</th>
     </tr>

    <tr>
        <td>
            <a class="doctor" href="details.aspx?view=1&amp;id= 85956">Hull, Christopher Merritt </a> (#85956)
        </td>
        <td>Four Counties Medical Clinic<br/>1824 Concessions Dr<br/>Newbury ON  N0L 1Z0<br/>Phone: (519) 693-0350<br/>Fax: (519) 693-0083</td>
        <!-- <td></td> --> 
        <td align="center"></td>
    </tr>
  </table>
</div>

(フォーマットのサポートに感謝します)

「ハル、クリストファー・メリット」というテキストを取得するための私の正規表現は次のとおりです。

patFinderName = re.compile('<a class="doctor" href="details.aspx?view=1&amp;id= 85956">(.*) </a>')

それは空に戻り続けます、そして私は理由を理解することができません、誰かが何か考えを持っていますか?

答えてくれてありがとう、私はそれに変更しました。

patFinderName = re.compile('<a class="doctor" href=".*">(.*) </a>')

今では美しく動作します。

4

2 に答える 2

3

?は正規表現の魔法のトークンで、前のアトムの0または1つを意味します。文字通りの疑問符記号が必要なため、エスケープする必要があります。

于 2012-06-12T01:39:13.970 に答える
0

?正規表現でエスケープする必要があります。

In [8]: re.findall('<a class="doctor" href="details.aspx\?view=1&amp;id= 85956">(.*)</a>', text)
Out[8]: ['Hull, Christopher Merritt ']
于 2012-06-12T01:39:36.953 に答える