我有一个字符串xxxxxxxxsrc="/slm/attachment/63338424306/Note.jpg"xxxxxxxx
现在,我想从字符串中提取子字符串slm/attachment/63338424306/Note.jpg
和Note.jpg
到变量i.e. temp1 & temp2.
我该如何在Java中使用正则表达式呢?
注意:63338424306可以是任何随机数。 &Note.jpg可以是任何东西 例如Note.png或abc.jpg或xxxx.yyy等。
请帮助我使用正则表达式提取这两个字符串。
答案 0 :(得分:1)
您可以使用反面的表情来获取文件名
((?:.(?<!/))+)\"
及正则表达式下方以获取完整路径
/(.*)\"
示例代码
public static void main(String[] args) {
Pattern pattern = Pattern.compile("/(.*)\"");
Pattern pattern1 = Pattern.compile("((?:.(?<!/))+)\"");
String matchString = "/slm/attachment/63338424306/Note.jpg\"xxxxxxxx";
Matcher matcher = pattern.matcher(matchString);
String fullString = "";
while (matcher.find()) {
fullString = matcher.group(1);
}
matcher = pattern1.matcher(matchString);
String fileName = "";
while (matcher.find()) {
fileName = matcher.group(1);
}
System.out.println(fullString + " " + fileName);
}
答案 1 :(得分:1)
根据您的评论,使用下面在我的代码中声明的字符串:
请澄清您输入的字符串是否不是这样或我缺少什么。
public static void main(String[] args) {
String str = "xxxxxxxxsrc=\"/slm/attachment/63338424306/Note.jpg\"xxxxxxxx";
String url = null;
// The below pattern will grab string between quotes
Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
url = m.group(1);
}
// and this will grab filename from the path(url)
p = Pattern.compile("(?:.(?<!/))+$");
m = p.matcher(url);
while (m.find()) {
System.out.println(m.group());
}
}