【问题标题】:Python regex partial extractPython 正则表达式部分提取
【发布时间】:2015-12-25 05:40:09
【问题描述】:

我想查找[[ ]]这些括号中的所有数据。

[[aaaaa]] -> aaaaa

我的python代码(使用re库)是

la = re.findall(r'\[\[(.*?)\]\]', fa.read())

如果我只想从 [[a|b]] 中提取 'a' 怎么办

这个任务有什么简洁的正则表达式吗? (提取|之前的数据)

或者我应该使用额外的 if 语句吗?

【问题讨论】:

    标签: python regex extract partial


    【解决方案1】:

    你可以试试:

    r'\[\[([^\]|]*)(?=.*\]\])'
    

    ([^\]|]*) 将匹配,直到找到 | 或 ]。 (?=.*\]\]) 是一个前瞻,以确保 ]] 在匹配的 RHS 上匹配。

    测试:

    >>> re.search( r'\[\[([^\]|]*)(?=.*\]\])', '[[aaa|bbb]]' ).group(1)
    'aaa'
    >>> re.search( r'\[\[([^\]|]*)(?=.*\]\])', '[[aaabbb]]' ).group(1)
    'aaabbb'
    

    【讨论】:

    • 感谢您提供简洁的答案和解释。我应该阅读更多关于正则表达式的文章。
    • 只有一件事需要注意 - 这不会处理嵌套括号(事实上,如果没有计数器的帮助,正则表达式通常不会)。
    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2011-04-21
    相关资源
    最近更新 更多