- 一般に、HTML で正規表現を使用するべきではないことはわかっています。一定のパターンを持つファイルからデータをすばやく取り除くための 1 回限りのツールとして使用しており、二度と使用することはありません。このタスクには正規表現を使用したいと考えています。HTML を Regex で解析すべきではないことを理解しています。
- いいえ、XML パーサー、BeautifulSoup、lxml などは使いたくありません。ありがとうございます。:)
- 私はこれを 1 回だけ使用して、永遠に使用したいと考えています。
そうは言っても、私が書いた正規表現は、ファイルの最後の「一致」にのみ一致します。理由はわかりません。ファイルにはかなり一定のパターンがあります。
<p someAttribute="yes"><b someOtherAttribute="no">My Title - </b> My Description</p>
<p someAttribute="yes"><b someOtherAttribute="no">My 2nd Title - </b> My 2nd Description</p>
<p someAttribute="yes"><b someOtherAttribute="no">My 3rd Title - </b> My 3rd Description</p>
<p class="normal" style="margin-left:1"><b style="font-weight:400">Another one </b>The cake is a lie</p>
属性は気にしません。<b>
タグに含まれるものとそれに続くものをグループ化しようとしています。タイトルと説明。
def parseData(html):
pattern = re.compile('.*<p.*><b.*>(.+)</b>(.+)</p>.*')
matches = re.findall(pattern, str(html))
for match in matches:
print(match)
def main():
htmlFile = "myFile.htm"
browser = UrlBrowser()
parseData(browser.getHTML(htmlFile))
このパターンは、利用可能な最後の「一致」にのみ一致します.*
。それが問題になるかどうかを確認するために before を追加しようとしましたが、違いはありませんでした。正規表現で何が欠けていますか?