在 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。对于我的问题,我们可以假设

我的问题是如何拆分文本?我们是否需要 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 就可以留空 - 虽然它没有意义