Java регулярное выражение: разделить запятые значения, но игнорировать запятые в кавычках - PullRequest
0 голосов
/ 07 марта 2012

У меня есть следующий текст:

"text","1","more, more text","3"

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

text
1
more, more text
3

Я читал учебник Sun здесь , вплоть до "Методы класса соответствия", но я все еще в растерянности. Спасибо!

Если бы это было что-то вроде text,1,more, это было бы достаточно просто, но, к сожалению, это не так. Есть идеи?

Ответы [ 6 ]

3 голосов
/ 07 марта 2012

Попробуйте этот шаблон: "(.+?)"

Он будет соответствовать 1 или более символов между двойными кавычками.Часть текста между кавычками доступна как matcher.group(1).

. Чтобы узнать больше, посмотрите на класс javadoc для Pattern.Кроме того, посмотрите на matcher.find() метод.

1 голос
/ 07 марта 2012

Вы можете пойти прямо к методу split (), например так:

    String text = "\"text\",\"1\",\"more, more text\",\"3\"";

    String[] split = text.split("\"(,\")?");
    for (String string : split) {
        System.out.println(string);
    }

(имейте в виду, что это возвращает массив длины 5 с первой позицией, являющейся пустой строкой)

Или, если вы хотите использовать Pattern / Matcher, вы можете сделать это так:

    Pattern pattern = Pattern.compile("\"([^\"]+)\"");
    Matcher matcher = pattern.matcher(text);
    while(matcher.find()){
        System.out.println(matcher.group(1));
    }
1 голос
/ 07 марта 2012

Вы можете попробовать это [^\"]+(?<!\",?)

0 голосов
/ 07 марта 2012
"[^"]*"

кажется, что это так! в строке Java вы можете использовать

"\"[^\"]*\""

Вы можете проверить это онлайн здесь: http://www.regexplanet.com/simple/index.html

0 голосов
/ 07 марта 2012

Вы можете попробовать что-то подобное.Я знаю, это не очень хорошее решение, но оно может вам помочь:)

string[] s=text.split("\",\""); 
s[0]=s[0].substring(1);
s[s.length-1]=s[s.length-1].substring(0,s[s.length-1].length);
0 голосов
/ 07 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...