получить строку с кавычками - PullRequest
2 голосов
/ 21 апреля 2011

У меня есть строка "Hello" hello (включая кавычки), и я просто хочу получить Hello, который имеет кавычки, но без кавычек

Я пытался использовать регулярное выражение, но он никогда не находит кавычки, которые я угадал

String s = new String("string");
    Pattern p = Pattern.compile("\"([^\"])\"");
    Matcher m = p.matcher(n);
    while (m.find()) {
      s = m.group(1);
    }

цикл while никогда не выполняется, предложения?

Ответы [ 3 ]

5 голосов
/ 21 апреля 2011

- Перемещена звезда в скобках для правильной группировки ---

"\"([^\"]*)\""

Успешно протестировано с кодом

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        String s = new String("\"Hello\" hello");
        Pattern p = Pattern.compile("\"([^\"]*)\"");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group(1));
        }
    }
}

, который дал ожидаемый результат

Hello

- следует оригинальный пост -

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

"\"([^\"])*\""

ближе к тому, что вам нужно. Обратите внимание на звезду, это означает ноль или более предыдущего выражения. В этом случае предыдущим выражением является «все, что лишено двойной кавычки».

4 голосов
/ 21 апреля 2011

Я предлагаю вам попробовать строку, в которой есть кавычки, если вы хотите ее найти. ;)

Попробуйте

String s = "start  \"string\" end";

или

String s = "\"Hello\" hello";
0 голосов
/ 21 апреля 2011

Вы можете просто использовать indexOf("\"") в этом случае.

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