2016-09-20 1 views
1

Я пытаюсь следующее:Извлечь значения в квадратные скобки, игнорируя одиночные кавычки

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

' сделать дополнительно и вне захвата группы

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

Вы можете сделать ' дополнительно используя ? в

>>> re.findall(r"\['?([^'\]]+)'?\]", s) 
['123', 'text'] 

  • \['? Матчи [ или ['.

  • ([^'\]]+) Совпадает с чем-либо кроме ' или ] и захватывает их.

  • '?\] Матчи ] или ']

Смежные вопросы