在方括号之间提取值,忽略单引号

时间:2016-09-20 18:54:26

标签: python regex

我正在尝试以下方法:

s = "Text text text [123] ['text']"

这是我的功能:

def getFromSquareBrackets(s):
    m = re.findall(r"\[([A-Za-z0-9_']+)\]", s)
    return m

但我得到了:

['123', "'text'"]

我想获得:

['123', 'text'] 

如何忽略单引号?

2 个答案:

答案 0 :(得分:3)

您可以使用'作为

使?成为可选项
>>> re.findall(r"\['?([^'\]]+)'?\]", s)
['123', 'text']
  • \['?匹配[['

  • ([^'\]]+)匹配']以外的任何内容并将其捕获。

  • '?\]匹配]']

答案 1 :(得分:2)

使'可选并且在捕获组之外

m = re.findall(r"\['?([A-Za-z0-9_]+)'?\]", s)