2016-04-19 4 views
2

я должен создать уникальный текстовый маркер в моем документе с помощью Python 2.7, с помощью следующей функции:Matching сложного выражения в питоне регулярного выражении

def build_textual_marker(number, id): 
    return "[xxxcixxx[[_'" + str(number) + "'] [_'" + id + "']]xxxcixxx]" 

выхода выглядит следующим образом: [xxxcixxx[[_'1'] [_'24']]xxxcixxx]

А потом Я должен поймать любое появление этого выражения в моем документе. Я в конечном итоге к следующему регулярному выражению, но это, похоже, не работает нормально:

marker_regex = "\[xxxcixxx\[(\[_*?\])\s(\[_*?\])\]xxxcixxx\]" 

мне было интересно, как я должен написать правильное регулярное выражение в этом случае?

+0

Вы пропустили '.' - [' \ [xxxcixxx \ [(\ [_. *? \]) \ S (\ [_. *? \]) \] Xxxcixxx \] '] (https://regex101.com/r/pU5kP3/1) –

ответ

2

Вместо ленивых звезд, вы можете также получить вместе с разрядным классом напрямую (функция build_textual_marker принимает параметр number, не так ли ?):

\[xxxcixxx\[(\[_'\d+'\])\s(\[_'\d+'\])\]xxxcixxx\] 

См. a demo on regex101.com.

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