2013-08-18 3 views
3

Как я могу найти строку между [[]]? После поиска ответа я нахожу этот метод ниже, но я не могу найти регулярное выражение для [[]], ни для {{}}.регулярное выражение для нахождения строки между [[]] и {{}}

Что я хочу сделать, так это найти, например, [[abc]]XXXXXXXXXX[[def]], и сохранить abc, def как ArrayList.

String s = "[[abc]]XXXXXXXXXX[[def]]"; 
Pattern p = Pattern.compile("[[(.*?)]]") 
Matcher m = p.matcher(s); 
if (m.find()) { 
    System.out.println(m.group(i)); // => "abc","def" 
} 
+2

Могут ли они содержать вложенные и/или экранированные скобки/скобки? –

+0

Вам нужно будет избежать '[', поскольку они являются специальными символами регулярных выражений. – Amber

+1

@Amber или использовать '[[] [[] (. *?) []] []]': P – HamZa

ответ

4

Вы должны удвоиться избежать открытий квадратных скобок (вы можете сделать то же самое с закрытием), так как они используются для определения классов символов:

Pattern p = Pattern.compile("\\[\\[(.*?)]]"); 

(точно так же, с фигурными скобками, что используются для квантификаторов)

Вы можете прочитать об этом fabulous post о невероятном мире квадратных скобок.