【问题标题】:find article text Regex Python查找文章文本 Regex Python
【发布时间】:2013-10-10 20:59:31
【问题描述】:

我写了一个简单的 python 脚本来解析文本文件。但是我的正则表达式需要修改才能在第二组中找到不止一行。

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 个空格。当前正则表达式仅匹配文本的第一行。是否可以更改正则表达式以使用类似于循环的组?

【问题讨论】:

    标签: python regex parsing


    【解决方案1】:

    也许你可以添加:

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

    在第二个捕获组之后,如:

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

    regex101 demo

    【讨论】:

    • 谢谢,它的作品。据我了解,这个未捕获的组仅匹配文章的最后一行和组的扩展音调。
    • @Dimm 匹配第一行之后的其他行。它的工作方式是它试图找到 5 个空格缩进,如果没有匹配,它就停在那里。这样就可以匹配文章最后一行了:)
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多