2017-01-16 5 views
-1

に別のパターン内のパターンをグループ化することは、私には、以下の文字列をしている:マッチングとパイソン

V0.0.42 (ADK 1.0.1) 

Release Notes</h1> 
<h2><a class="anchor" id="subsecRN042"></a> 
V0.0.42 (ADK 1.0.1)</h2> 
<ul> 
<li>Fix for buffer level drop due to interference causing HD to under run </li> 
<li>Improve recovery mechanism for HD when buffer level is too low</li> 
</ul> 
<h2><a class="anchor" id="subsecRN041"></a> 
V0.0.41 (ADK 1.0.0)</h2> 
<ul> 
<li>Resolve issue with writing to MSI area of flash in ATE</li> 
</ul> 

私はバージョン番号グループにしようとしているが、例えば、一つのグループには、以下が含まれます

そして次のグループは、リリースノートを含むことになり、例えば、以下のグループが含まれます

Fix for buffer level drop due to interference causing HD to under run 
Improve recovery mechanism for HD when buffer level is too low 

これをドキュメント全体で検索して一致させようとしています。最終的に最終的な目標は試合ごとに2-3個のグループを持つことです。

マッチ1:

Group 1 = V0.0.42 (ADK 1.0.1) 
Group 2 = Fix for buffer level drop due to interference causing HD to under run, Improve recovery mechanism for HD when buffer level is too low 

マッチ2:

Group 1 = V0.0.41 (ADK 1.0.0) 
Group 2 = Resolve issue with writing to MSI area of flash in ATE 

は、誰もがこれを行う方法を知っていますか?私は約2時間、幸運の少量で、今試みてきました。近いうちに、答えが見つかりませんでした。私は、次の式と最も得ている:

r'^(V.+)</h2>\s<ul>\s((?:<li>.+</li>\s){0,})' 

をしかし、私は、識別子を取り除くための方法を見つけるように見えることはできません。

<li> and </li> 

任意の助けをいただければ幸いです。ありがとう。 <li><\li>使用して正規表現を削除しようと

+2

は、なぜあなたは正規表現を使用しますキャプチャグループとして(.+)を扱わ^(V.+)</h2>\s<ul>\s((?:<li>(.+)</li>\s){0,})または類似のような正規表現を、検討していましたか?通常、HTMLは解析されません。 – Raz

+0

[BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/)をご覧ください。 – Raz

答えて

0

繰り返し性質を満たす最後の部分を意味するので<li>タグ内の最後のセクションでは、.+ビットによって捕捉されることを意味する可能性があり、そのグループの要件を捕捉する意志その捕獲グループ(​​)によって捕らえられている。

このように、最初の段階でregexを使用する場合は、string.replace(例:regexResult.replace('<li>',''))が動作するか、reモジュールのre.split(例:re.split('<\/*li>',regexResult))文字列?

EDIT:明確にするために、最初の段落は

+0

これは、正規表現マッチングがどのように機能するかを間違って理解していることを示しています。洞察に感謝します。 –