2014-11-18 3 views
1

Я пытаюсь разбить строку, используя регулярное выражение с Java. Строка выглядит так: {'tata','toto','titi'} Но {} описывает порядок предыдущего либерала, поэтому он не работает для меня.Использовать регулярное выражение для разделения строки

Что регулярное выражение следует использовать, чтобы получить этот результат:

tata 
toto 
titi 
+2

Можете ли вы опубликовать код, который у вас есть до сих пор? –

+0

\ d {X} означает в регулярном выражении, что он встречается X раз. как игнорировать фигурные скобки –

+3

Вы пытаетесь проанализировать существующий формат обмена данными? Если это так, может быть лучшее решение, чем регулярное выражение. – FriendlyAgent

ответ

2

Вы можете использовать это регулярное выражение:

String str = "{'tata','toto','titi'}"; 
String[] arr = str.split("[{},']+"); 
//=> tata, toto, titi 

Там нет необходимости, чтобы избежать { или } внутри класса символов.

1

Вы можете использовать \ отключить особое значение любого символа в регулярном выражении.

С \ сам имеет особое значение в String, вам нужно будет его дублировать, если вы укажете свое регулярное выражение непосредственно в строковом литерале в java. Поэтому замените "{something}" на \\{something\\}".

1
String a = "{'tata','toto','titi'}" 
a = a.replace("{'", ""); // get rid of opening bracket and singlequote 
a = a.replace("'}", ""); // get rid of ending bracket and singlequote 
String[] b = a.split("','"); // split on commas surrounded by singlequotes 

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

+0

Полностью забыл о замене, не меняя исходную строку. Спасибо, что поставил меня прямо, кем бы вы ни были. – DaaaahWhoosh