Как получить регулярное выражение для «строки в заданной строке

#java

#java

Вопрос:

Нам нужно указать примерно так:I»ЭТО ТЕСТ [1]» для данных: I «ЭТО ТЕСТ[1]» — для вставки в красное смещение.

Но вышеуказанная вещь должна быть выполнена, только если у нас есть » в заданной строке, поэтому я ищу, как идентифицировать » в заданной строке, пытался с помощью regEx, но безуспешно. Не могли бы вы, пожалуйста, предложить здесь, как проверить, есть ли в строке «, чтобы, если совпадение найдено, я заменил все («»» , «\»»);

Спасибо!!!

Ответ №1:

Чтобы проверить, содержит ли строка строку «, вы должны сначала сопоставить символ буквально, добавив к вашему регулярному выражению, а затем сопоставить «символ, добавив «.

Конечным регулярным выражением является \», и это проверяется на соответствие предоставленной вами строке на https://regex101.com /

Быстрый тест:

 String regex = "\"";
Pattern pattern = Pattern.compile(regex);
String toTest = "hi there ". Do I match?";
boolean found = pattern.matcher(toTest).find();
System.out.println("Boolean value for whether pattern matches toTest: "    found);
  

Вывод: «Логическое значение для определения того, соответствует ли шаблон toTest: true»

После того, как найдено значение true, просто запустите свою команду replaceAll следующим образом:

 String#replaceAll(regex, "new value");
  

Примечание: » это просто «. » будет соответствовать «. \»будет соответствовать «. Каждый раз, когда вы хотите сопоставить дополнительный , просто добавьте \ к своему регулярному выражению
— В качестве альтернативы, если вы хотите сопоставить дополнительный «add » с вашим регулярным выражением

Комментарии:

1. Спасибо, Натан! после того, как совпадение истинно, я задаю как: result=pattern.matcher(toTest).replaceAll(regex); System.out.println("result::::" result); Но не повезло, если у меня есть входная строка, подобная этой: I «TEST STR [1] затем я получаю вывод как: I «TEST STR[1]»

2. Не беспокойтесь «, я «ТЕСТИРУЮ STR[1] «».replaceAll(regex, «»); удалит » из строки — Если вы хотите заменить » на «»» в строке, просто замените этим пустое «» 🙂

3. class Test { public static void main(String[] args) { String regex = "\""; String result=""; Pattern pattern = Pattern.compile(regex); String toTest = "I"TEST STR[1]""; boolean found = pattern.matcher(toTest).find(); System.out.println("Boolean value for whether pattern matches toTest: " found); if(found){ System.out.println("TRUE"); System.out.println("result::::" "I"TEST STR[1]"".replaceAll(regex, "\"")); } } } Привет, @nathan, я пытаюсь использовать описанный выше способ замены, но это выдает результат как I»TEST STR[1]», но мне нужно получить как: I «TEST STR[1]» .

4. Натан, пожалуйста, ты можешь попробовать запустить этот фрагмент кода 🙂

5. Вывод для следующего кода: Найдено «внутри I»TEST STR[1]» string, new val = I»TEST STR[1]» Code = pastebin.com/pJYEenyu Если это не то, что вы хотите, тогда вам нужно быть немного более конкретным в том, какой вывод вы хотите для какого ввода