Python正则表达式部分提取

SUN*_*ONG 7 python regex extract partial

我想找到[[ ]]这些括号中的所有数据.

[[aaaaa]] - > aaaaa

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

la = re.findall(r'\[\[(.*?)\]\]', fa.read())
Run Code Online (Sandbox Code Playgroud)

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

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

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

anu*_*ava 3

你可以试试:

r'\[\[([^\]|]*)(?=.*\]\])'
Run Code Online (Sandbox Code Playgroud)

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

测试:

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