我在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。
“未污染”版本:!\[[^\]]+\]\([^)]+\)
说明!
字面上是!
\[
转义了[
[^\]]+
尽可能多的不是]
\]\(
转义了](
[^)]+
尽可能多的不是)
\)
转义了)