java正则表达式,用于double**示例:**text**

wz3gfoph  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(311)

我需要这个案例场景的正则表达式:


**This text is bold**this is not**abc123*-#$%&/()**this is not**yes****

所以我可以把这些结果分开:

This text is bold
abc123*-#$%&/()
yes**

我已经挣扎了好几个小时了,救命啊。
我最亲近的是:

\*\*([^\*]\*)\*\*

实际上,我需要使用 * 内部 **here(*)** 为了获得 here(*) .
我想得到 123?=)* 结果来自 **123?=)*** .

anhgbhbe

anhgbhbe1#

你可以用

\*\*([^*]*(?:\*(?!\*)[^*]*)*\**)\*\*

查看regex演示。
等价物是 (?s)\*\*(.*?)\*\*(?!\*) ,请参阅这个regex演示(基于andreas的建议)。但是,这种模式比前一种模式慢1/3左右。
细节 \*\* -a ** 子串 ([^*]*(?:\*(?!\*)[^*]*)*\**) -第1组:除 * ( [^*]* )后面是零次或多次重复的 * 但这并不是立即采取行动 * (见 \*(?!\*) )然后是零个或多个非星号字符,然后是任意数量的星号(参见 \** 在组模式的末尾) \*\* -a ** 子串
这个 (?s)\*\*(.*?)\*\*(?!\*) 相似的是 (?s) 是使 . 跨行匹配,然后 (.*?) 将零个或多个字符匹配并捕获到组1中,尽可能少,直到第一次出现 ** 不立即跟在后面的文本 * .

相关问题