2015-08-23 3 views
0

Так что я пытаюсь разобрать материал между определенным началом ser[ и концом ], но дело в том, что иногда есть скобки внутри, которые уже приводят к путанице. есть только один экземпляр этого внутри трубы |.regex: матч между двумя строками, но самая дальняя правая строка

текст: asdfsd|//ser["gnd[{}\"\"]sgd"]|//sgsdgsdgsdg

попытка:

фактический: "gnd[{}\"\"

ожидается: gnd[{}\"\"]sgd

https://regex101.com/r/uD5eU0/2

+0

'но дальний правого string' Но вы выходите из своего пути, чтобы найти кратчайшую правильную строку, где регулярные выражения учебников подчеркнуть значение по умолчанию' * 'является соответствовать' farthest'. – sln

ответ

3

Вы можете использовать шаблон

'ser\[(.*)\]' 

Например

>>> import re 
>>> s = r'''asdfsd|//ser["gnd[{}\"\"]sgd"]|//sgsdgsdgsdg''' 
>>> re.findall('ser\[(.*)\]', s) 
['"gnd[{}\\"\\"]sgd"'] 
+0

10 минут, пока я не смогу принять этот ответ – user299709

+0

Рад помочь :) – CoryKramer

+0

спасибо за быстрый ответ! – user299709