我在Java中有很长的文字,其中包含至少一种markdown图片语法。如果存在N降价图像语法,则需要将字符串拆分为N+1子字符串,并将其存储在String数组中,调用texts。例如,我有以下文字

Hello world!
![Alt text](/1/2/3.jpg)
Hello Stack Overflow!


然后Hello world!\n将存储在位置0,而\nHello Stack Overflow!将存储在位置1。对于我的问题,我们可以假定


Alt文字部分仅包含字符A-Z,a-z和空格。
URL部分仅包含数字0-9和斜杠/。它的扩展名只能是.jpg。其他扩展名将不存在。


我的问题是如何分割文字?我们需要一个Java正则表达式,例如*![*](*.jpg)吗?

最佳答案

尝试以下操作(准备复制粘贴):

"!\\[[^\\]]+\\]\\([^)]+\\)"

有关如何获取匹配项的信息,请参见here

“未污染”版本:
!\[[^\]]+\]\([^)]+\)

说明


!字面上是!
\[转义了[
[^\]]+尽可能多的不是]
\]\(转义了](
[^)]+尽可能多的不是)
\)转义了)

08-27 20:29
查看更多