2013-09-11 3 views
0

У меня есть RegEx, который, я считаю, должен работать, но это не так.Как захватить содержимое между двумя двойными скобками

Я хотел бы взять «тест» из [[test]].

Я попытался:

\[\[(\w+)\]\] 
\[\[([A-z]*?)\]\] 
\[\[(.*?)\]\] 

Все это просто захватить всю вещь. Значит, он захватывает [[test]], а не только контент. Я не уверен, как получить регулярное выражение, которое захватит JUST 'test', а не скобки.

+0

Я бы рекомендовал смотреть на этот смежный вопрос: http://stackoverflow.com/questions/4026685/regex-to-get-text-between-two-characters –

+0

Чтение это прямо сейчас! – user2767260

+0

На каком языке вы используете? Если это C#, вы «должны» избежать скобок – jmstoker

ответ

0

Что относительно этого?

\[\[(.+)\]\] 

Возможно, было бы неплохо указать, какой язык вы используете. Это определит, что вам нужно избежать скобок.

Это сработало на http://regexpal.com/, оно просто будет соответствовать символам слов, если это все, что вам нужно.

\w+ 
+0

Это по-прежнему захватывает обе скобки с начала и до конца – user2767260

+0

Это действительно работает! Спасибо. По какой-то причине я продолжал пытаться использовать [[перед частью, которую я хотел захватить (которая всегда является символом слов), и не могла заставить ее работать. Это делало его более сложным, чем нужно. – user2767260

0

вы должны удалить обратную косую черту. Кронштейны не должны быть экранированы, и вы можете группировать части выражения образов, заключая их с "(" и ")":

[[\(\w\w*\)]] 

или

\[\[\([A-z][A-z]*\)\]\] 

или

\[\[[A-z][A-z]*\]\] 

будет работать правильно.

+0

Ничто из этого не работает. В итоге он ничего не поймает. – user2767260

+0

заменить '+' на '*' – orezvani

+0

@emab из любопытства - вот эти примеры для 'Java'? – jmstoker

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