[![在此处输入图片描述] [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
感谢大家的回答。我已经更新了一点问题,请帮我解决这个问题。
答案 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
例如:
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