V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MOONLIGHTT
V2EX  ›  程序员

Python 中的正则表达式

  •  
  •   MOONLIGHTT ·
    Sunnycheey · Oct 13, 2019 · 2171 views
    This topic created in 2394 days ago, the information mentioned may be changed or developed.

    我想从论文中提取 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 来完成任务,但由于我正则表达式知识不太够,因此想借着这个机会学习以下。

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

    r'ABSTRACT\\n((?:(?!\\n).)+\\n)+\\n'
    Procumbens
        4
    Procumbens  
       Oct 13, 2019
    @bumz []中^开头表示取非 不表示字符
    okface
        5
    okface  
       Dec 12, 2019
    请问大佬说的完全不用 re 来完成指的是什么方法完成,我也在做类似的事情。
    MOONLIGHTT
        6
    MOONLIGHTT  
    OP
       Dec 20, 2019   ❤️ 1
    @okface

    手写字符串匹配,因为我抽取出的 abstract 后面有两个\n\n,所以这个也不难写。

    不过貌似现在流行用 NLP 的技术来 pdf 中的数据,给老哥指条路:

    https://github.com/allenai/science-parse
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2435 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:08 · PVG 12:08 · LAX 21:08 · JFK 00:08
    ♥ Do have faith in what you're doing.