0

次の形式の文字列があります。

some text <br>septembar 1989<br>

そして、私はこの正規表現を使用して月と年の部分を見つけています

<br/?>(?!=b\.)(.*?\b\d{4}\b)

そして私は欲しいものを手に入れます-septembar 1989

<br>ただし、挿入されたときの状況があります

<br>some text <br>septembar 1989<br>

結果:some text <br>septembar 1989

両方のケースをサポートするために既存のパターンを変更する方法を提案できますか? <br>どうにかしてマッチングから除外する必要があると思います.*?

4

3 に答える 3

0
import re

ss = 'dfgqeg<br>some text <br>septembar 1989<br>'

reg = re.compile('<br(?: /)?>'
                 '(?!.+?<br(?: /)?>.+?<br(?: /)?>)'
                 '(.+?\d{4})'
                 '<br(?: /)?>')

print reg.search(ss).group(1)

  • '<br(?: /)?>'キャッチ<br><br />オカレンス

  • '(?!.+?<br(?: /)?>.+?<br(?: /)?>)'は先読みアサーションで
    あり、分析されたテキストで開始する位置の後に、次の連続として記述された文字のスイートがないことを確認します。

    • .+? あらゆる種類の文字ですが、この部分が発生 する?とすぐに停止する必要がある注文<br><br />
    • <br>また<br />
    • 再び、<br>またはの前に停止するあらゆる種類の文字<br />
    • <br>また<br />
于 2013-03-04T13:24:29.407 に答える
0

私は簡単なコードを書きました。

import re
def getDate(str):
 m = re.match("[\<br>]*[\w\s]*\<br>([\w\s]*[12][0-9]{3})",str);
 return m.group(1)

print getDate("some text <br>dec 1989<br>");
print getDate("<br> some text <br>septembar 1989<br>");
print getDate("grijesh chuahan <br>feb 2009<br>");

出力:

dec 1989
septembar 1989
feb 2009
于 2013-03-04T13:52:52.107 に答える
0

これを試して

<br/?>([^<]+)\d{4}

[^<]は、必要な開始タグ以外のすべてに一致することを意味します。

于 2013-03-04T13:15:46.793 に答える