我们如何在Java中使用正则表达式将“ x”子字符串下面的“ y”子字符串替换?

时间:2019-03-06 06:21:40

标签: java regex

[![在此处输入图片描述] [1]] [1]我想使用Java中的正则表达式将子字符串src="/slm/attachment/63338424306/Note.jpg"替换为子字符串jira/rally/images

以下是获取包含子字符串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 个答案:

答案 0 :(得分:2)

yourString.replaceAll("src=\"/slm/attachment", "src=\"/jira/rally/images");

答案 1 :(得分:1)

您可以使用以下替换顺序:

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

正则表达式演示https://regex101.com/r/ZtRg49/7/

答案 2 :(得分:1)

您可以为src="部分使用捕获组,并匹配要替换的部分。

(src\s*=\s*")/slm/attachment/\d+
  • (捕获组
    • src\s*=\s*"匹配src,0+个空白字符,=,0+个空白字符和"
  • )关闭群组
  • /slm/attachment/字面上匹配
  • \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 demo

例如:

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