Как заменить подстроку 'x' на подстроку 'y', используя регулярное выражение в Java? - PullRequest
2 голосов
/ 06 марта 2019

[! [Введите описание изображения здесь] [1]] [1] Я хочу заменить подстроку src="/slm/attachment/63338424306/Note.jpg" на подстроку jira/rally/images, используя регулярное выражение в Java.

Ниже приведен запрос для получениясписок строки, содержащей подстроку src="/slm/attachment/63338424306/Note.jpg"

criteria.add(Restrictions.like("comment", "%<img%"));
criteria.setMaxResults(1);
List<Comments> list = criteria.list();

Как заменить с помощью регулярных выражений?Пожалуйста, помогите мне здесь.

Допустим, xxxxxxxxsrc="/slm/attachment/63338424306/Note.jpgxxxxxxxx - это строка, то после замены я ожидаю xxxxxxxxsrc="jira/rally/images/Note.jpgxxxxxxxx

номер.63338424306 может быть любое случайное нет.имя и формат изображения «Note.jpg» можно изменить, например, «abc.png» и т. д.

В основном я хочу заменить /slm/attachment/63338424306/ на jira/rally/images

Спасибо всем вамза ваши ответы.Я немного обновил вопрос, пожалуйста, помогите мне с этим.

Ответы [ 3 ]

2 голосов
/ 06 марта 2019
yourString.replaceAll("src=\"/slm/attachment", "src=\"/jira/rally/images");
1 голос
/ 06 марта 2019

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

(src\s*=\s*")/slm/attachment/\d+
  • ( Группа захвата
    • src\s*=\s*" Match src, 0+ пробельных символов, =, 0+ пробельных символов и "
  • ) Закрыть группу
  • /slm/attachment/ Matchбуквально
  • \d+ Совпадение 1+ цифр

Обратите внимание, что если вы хотите совпадать только с 0+ пробелами и без перевода строки, вы можете использовать только пробел или [ \t]* для сопоставленияпробел и табуляция вместо \s*

В Java

String regex = "(src\\s*=\\s*\")/slm/attachment/\\d+";

И используйте первую группу захвата при замене:

$1jira/rally/images

Результат:

src="jira/rally/images/Note.jpg

Regex demo | Java демо

Например:

String string = "src  = \"/slm/attachment/63338424306/Note.jpg";
System.out.println(string.replaceAll("(src\\s*=\\s*\")/slm/attachment/\\d+", "$1jira/rally/images"));
// src  = "jira/rally/images/Note.jpg
1 голос
/ 06 марта 2019

Вы можете использовать следующие последовательности замены:

String a = "abc 123 src=\"/slm/attachment/63338424306/Note.jpg abc 132";
String b = "abc 123 src=\"/slm/attachment/61118424306/Note.jpg xyz";
String c = "123xxsrc=\"/slm/attachment/51238424306/Note.jpgxx324";
System.out.println(a.replaceAll("(?<=src=\")/slm/attachment/\\d+","jira/rally/images"));
System.out.println(b.replaceAll("(?<=src=\")/slm/attachment/\\d+","jira/rally/images"));
System.out.println(c.replaceAll("(?<=src=\")/slm/attachment/\\d+","jira/rally/images"));

выход:

abc 123 src="jira/rally/images/Note.jpg abc 132
abc 123 src="jira/rally/images/Note.jpg xyz
123xxsrc="jira/rally/images/Note.jpgxx324

regex demo: https://regex101.com/r/ZtRg49/7/

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