2015-11-08 6 views
0

Я хочу создать регулярное выражение в Python 3 для длинных строк lua.Регулярное выражение для строк

Они должны быть в следующем формате:

они должны начать с «[», а затем 0 или более «=», а затем «[» снова. Затем следует строка и заполняется с помощью: «]», затем столько же равно, сколько и «]».

Например:

[[ hello world ]] 

или

[===[ hello world ]===] 

или

[====[ trick ]==] still ]===] in the ]========] string ]====] 

Я использую python3 если это имеет значение

+1

Вы говорите, что в верхней части вы хотите регулярное выражение Lua, то в нижней части вы говорите Python. Что он? – MattDMo

+0

Я пишу в python, но синтаксис [== [синтаксис является синтаксисом lua. Я отредактирую свой вопрос, чтобы избежать путаницы –

+0

Если им нужно одинаковое количество '=' с обеих сторон, почему в последнем примере есть один (т. Е. Непревзойденный) из восьми из них? – TigerhawkT3

ответ

3

Я уверен, что это то, что вы прошу:

\[(=*?)\[(.*?)\]\1\] 

\[   #matches '[' literally 
    (  #first capture group 
     =*? #match the smallest number of concurrent '=' signs to make this match valid 
    ) 
\[   #matches '[' literally 
    (  #second capture group (this is if you just want the string value) 
     .*? #matches the smallest number of characters to make this match valid 
    ) 
\]   #matches ']' literally 
    \1  #match an exact copy of the first capture group (makes sure both sides have the same number of equal signs) 
\]   #matches ']' literally 

Regex101

+1

Вау! не могли бы вы объяснить это? –

+1

@YahyaUddin обязательно! я сейчас отредактирую объяснение – d0nut

+1

@YahyaUddin обновлено! – d0nut

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