2013-06-24 2 views
-1

Я ищу Java Regex, так что я могу разбить следующее выражение: сначала использует '-', но если '-' используется в кавычке, то его игнорировать нельзя.Как сформировать Java Regex для разделения строки?

например: тест - который «содержит» - «» внутри - кавычку. результат должен быть Arry так:

[0]: a test 
[1]: which "contains "-"" inside 
[2]: a quotation mark 

Я не очень хорошо с регулярным выражением и будет слава полной, если кто-нибудь может мне помочь :) заранее спасибо

ответ

2

Regex Planet Заканчивать, чтобы проверить любые регулярные выражения ты сделать

вы должны быть в состоянии добиться этого с

String[] splitAray = yourString.Split("[^\"]-[^\"]") 

Update используя взгляд вперед/сзади, так что символы до и после - не потребляется

String[] splitAray = yourString.Split("(?!\")-(?!\")") 
+4

Я сделал бы это lookbeh ind и lookahead, так что совпадение - это точно черта, а не включение частей того, что происходит с обеих сторон. – cHao

+0

-1 Это будет потреблять символы с обеих сторон, если тире, что делает этот ответ по существу «неправильным» – Bohemian

+0

Да, это будет есть кавычки. (Выход будет [тест, который «содержит» - внутри, кавычек]) –

2

решения с помощью просмотра назад и предпросмотра:

String input = "a test - which \"contains \"-\" inside - a quotation mark"; 
String[] chunks = input.split("(?<!\")-(?!\")"); 
System.out.println(Arrays.toString(chunks)); 

ВЫВОД:

[a test , which "contains "-" inside , a quotation mark] 

EDIT: изменение первого часть regexp ((?!\")) до (?<!\")

+0

Первая часть должна быть но это не похоже на то, что вам нужно, а не на кавычку. – cHao

+0

Исправлено: он работал, хотя –

+0

Я не согласен :) –