在 Java 的字符串中查找降价图像语法
Find markdown image syntax in String in Java
我在Java中有一篇很长的文字,其中至少包含一种降价图片语法。如果有 N
markdown 图片语法,我需要将字符串拆分为 N+1
个子字符串并将它们存储在一个字符串数组中,调用 texts
。例如,我有以下文本
Hello world!
![Alt text](/1/2/3.jpg)
Hello Stack Overflow!
那么Hello world!\n
会存到位置0,\nHello Stack Overflow!
会存到位置1。对于我的问题,我们可以假设
- 替代文字部分仅包含字符 A-Z、a-z 和空格 space。
- URL 部分仅包含数字 0-9 和斜杠
/
。它的扩展名只会是 .jpg
。其他扩展将不存在。
我的问题是如何拆分文本?我们是否需要 java 正则表达式,例如 *![*](*.jpg)
?
试试这个(准备复制粘贴):
"!\[[^\]]+\]\([^)]+\)"
有关如何获取匹配项的信息,请参阅 here。
"Untainted"版本:
!\[[^\]]+\]\([^)]+\)
说明
!
字面上的!
\[
转义 [
[^\]]+
尽可能多的不是 ]
\]\(
转义 ](
[^)]+
尽可能多的不是 )
\)
转义 )
这是我的方式
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> allMatches = new ArrayList<String>();
String str = "}```![imageName](/sword?SwordControllerName=KMFileDownloadController&id=c60b6c5a8d9b46baa1dc266910db462d \"imageName\")#### JSON data";
Matcher m = Pattern.compile("\[.*\]\((.*)\)").matcher(str);
while (m.find()) {
allMatches.add(m.group(1).split(" ")[0]);
}
//print "/sword?SwordControllerName=KMFileDownloadController&id=c60b6c5a8d9b46baa1dc266910db462d"
for(String s:allMatches){
System.out.println(s);
}
}
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
!\[[^\]]*?\]\([^)]+\)
这样 Alt Text 就可以留空 - 虽然它没有意义
我在Java中有一篇很长的文字,其中至少包含一种降价图片语法。如果有 N
markdown 图片语法,我需要将字符串拆分为 N+1
个子字符串并将它们存储在一个字符串数组中,调用 texts
。例如,我有以下文本
Hello world!
![Alt text](/1/2/3.jpg)
Hello Stack Overflow!
那么Hello world!\n
会存到位置0,\nHello Stack Overflow!
会存到位置1。对于我的问题,我们可以假设
- 替代文字部分仅包含字符 A-Z、a-z 和空格 space。
- URL 部分仅包含数字 0-9 和斜杠
/
。它的扩展名只会是.jpg
。其他扩展将不存在。
我的问题是如何拆分文本?我们是否需要 java 正则表达式,例如 *![*](*.jpg)
?
试试这个(准备复制粘贴):
"!\[[^\]]+\]\([^)]+\)"
有关如何获取匹配项的信息,请参阅 here。
"Untainted"版本:
!\[[^\]]+\]\([^)]+\)
说明
!
字面上的!
\[
转义[
[^\]]+
尽可能多的不是]
\]\(
转义](
[^)]+
尽可能多的不是)
\)
转义)
这是我的方式
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> allMatches = new ArrayList<String>();
String str = "}```![imageName](/sword?SwordControllerName=KMFileDownloadController&id=c60b6c5a8d9b46baa1dc266910db462d \"imageName\")#### JSON data";
Matcher m = Pattern.compile("\[.*\]\((.*)\)").matcher(str);
while (m.find()) {
allMatches.add(m.group(1).split(" ")[0]);
}
//print "/sword?SwordControllerName=KMFileDownloadController&id=c60b6c5a8d9b46baa1dc266910db462d"
for(String s:allMatches){
System.out.println(s);
}
}
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
!\[[^\]]*?\]\([^)]+\)
这样 Alt Text 就可以留空 - 虽然它没有意义