Правильно соответствуйте строковому литералу Java [дубликат]

7
задан Tiago Veloso 2 June 2010 в 15:17
поделиться

3 ответа

Хорошо. Итак, что вы хотите - это искать в строке String последовательность символов, начинающуюся и заканчивающуюся двойными кавычками?

    String bar = "A \"car\"";
    Pattern string = Pattern.compile("\".*?\"");
    Matcher matcher = string.matcher(bar);
    String result = matcher.replaceAll("\"bicycle\"");

Обратите внимание на шаблон нежадный . *? .

4
ответ дан 7 December 2019 в 09:57
поделиться

Вы можете посмотреть различные генераторы синтаксического анализатора для Java и их регулярные выражения для элемента грамматики StringLiteral.

Вот пример из ANTLR :

StringLiteral
    :  '"' ( EscapeSequence | ~('\\'|'"') )* '"'
    ;
1
ответ дан 7 December 2019 в 09:57
поделиться

Вы не говорите, какой инструмент вы используете для поиска (perl? Sed? Текстовый редактор ctrl-F и т. Д.). Но обычным регулярным выражением было бы:

\".*?\"

Изменить: это быстрый и грязный ответ, который не справляется с экранированными кавычками, комментариями и т. Д.

-1
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: