Python 正则表达式部分摘录

Python regex partial extract

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

[[aaaaa]] -> aaaaa

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

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

如果我只想从 [[a|b]]

中提取 'a' 怎么办

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

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

你可以试试:

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

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

测试:

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