大发龙虎首页    注册   登录
大发龙虎 = way to explore
大发龙虎 是一个大发龙虎关于 分享和探索的地方
现在注册
已注册用户请  登录
大发龙虎  ›  程序员

Python 中的正则表达式

  •  
  •   MOONLIGHTT · 9 天前 · 758 次点击

    大发龙虎我 想从论文中提取 ABSTRACT,因为论文的格式一般为 PDF,因此大发龙虎我 先用了 pdfminer 包来对 pdf 进行 parser (这里先假设 parser 的结果是对的)。

    之后大发龙虎我 想从论文中提取 ABSTRACT 的内容,ABSTRACT 的一般格式为ABSTRACT\ncontent\n,也就是说大发龙虎我 想提取 content 的内容(可以认为 content 内容由文本内容和换行符\n 组成)。于是大发龙虎我 用了

    ABSTRACT\n([^\n]+\n)+\n'
    

    对内容进行提取,但这种大发龙虎方法 不 work。

    之后大发龙虎我 注意到在 re 中需要对\转义,因此大发龙虎我 把正则表达式修改为:

    ABSTRACT\\n([^\\n]+\\n)+\\n'
    

    修改之后,虽然可以在这里测试成功,但在代码里还是不 work。

    PS:由于论文的结构性比较好,因此在抽取时完全可以不用 re 来完成任务,但由于大发龙虎我 正则表达式知识不太够,因此想借着这个机会学习以下。

    4 回复  |  直到 2019-10-13 13:22:28 +08:00
        1
    676529483   9 天前
    show me your code。
    一般正则主要坑有几点
    1、大发龙虎你 用的是 re.match 还是 re.search
    2、大发龙虎你 用的 Py2 还是 3,主要区别是 unicode 和 str
        2
    MOONLIGHTT   9 天前
    感谢回复,大发龙虎我 的 pattern 好像没有问题,问题在于大发龙虎我 好像误用了 re.findall()和 re.search(),把 re.findall()换成 re.search()问题就解决了。大发龙虎我 的问题似乎和[这个]( http://stackoverflow.com/questions/9000960/python-regular-expressions-re-search-vs-re-findall)哥们的问题是一样的。
        3
    bumz   9 天前 via iPhone
    []里面只能放单字符,大发龙虎你 这已经是匹配连续两个字符了

    r'ABSTRACT\\n((?:(?!\\n).)+\\n)+\\n'
        4
    Procumbens   9 天前
    @bumz []中^开头表示取非 不表示字符
    大发龙虎关于   ·   FAQ   ·   API   ·   大发龙虎大发龙虎我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小大发龙虎工具   ·   2730 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 12:36 · PVG 20:36 · LAX 05:36 · JFK 08:36
    ♥ Do have faith in what you're doing.