2

テキストファイルを解析するための簡単な python スクリプトを作成しました。しかし、私の正規表現は、2 番目のグループで複数の行を見つけるために修正が必要です。

import re


if __name__ == '__main__':
    sonnik = open('sonnik.txt').read().decode('utf-8')
    article = re.compile(ur'^([A-Za-zА-Яа-я0-9_\-:,\.«» ]+)[\n]{2}^[ ]{5}([A-Za-zА-Яа-я0-9_\-:,\.«» ]+)$',re.M|re.U)
    result = article.findall(sonnik)
    print len(result)

    print '-----'
    print result[0][1].decode('utf-8')
    print '-----'

ソース テキスト ファイルの例:

Банкет

     Видеть во сне банкет - хорошо. Друзья будут к Вам благосклонны. Видеть во сне себя в толпе веселых, нарядно одетых гостей, которые едят на дорогой посуде и пьют старые вина баснословной стоимости, предвещает огромную удачу в любых начинаниях и счастье в кругу друзей.
     Видеть недружелюбие среди гостей, нелепые пустые столы - является знаком очень тяжелых недоразумений, размолвок и разочарований, ожидающих Вас.

Банкрот

     Если Вам снится сон, в котором Вы не можете расплатиться с долгами и чувствуете себя банкротом - то в реальной жизни не бойтесь угрозы с этой стороны. Напротив, Ваша энергия и уверенность в себе позволяет Вам наилучшим образом организовать свои дела.
     Однако иные тревоги могут смутить Вашу душу.
     Если Вы видите банкротами других, то это означает, что наяву Вам встретятся люди благородные, честные в делах, хотя, возможно, излишней откровенностью они могут Вам навредить.
     Молодой особе этот сон обещает небольшую размолвку с любимым, виной чему разность их взглядов.

用語と記事のペア。記事のテキストは、5 つの空白でインデントして用語の後に改行の間に配置されます。現在の正規表現は、テキストの最初の行のみに一致します。グループのループのようなものを使用するように正規表現を変更することは可能ですか?

4

1 に答える 1

1

多分あなたは追加することができます:

(?:\n^[ ]{5}[A-Za-zА-Яа-я0-9_\-:,\.«» ]+)*

2 番目のキャプチャ グループの後、次のようになります。

^([A-Za-zА-Яа-я0-9_\-:,\.«» ]+)\n{2}^[ ]{5}([A-Za-zА-Яа-я0-9_\-:,\.«» ]+(?:\n^[ ]{5}[A-Za-zА-Яа-я0-9_\-:,\.«» ]+)*)$

正規表現101のデモ

于 2013-10-10T21:12:09.240 に答える