我需要这个案例场景的正则表达式:
**This text is bold**this is not**abc123*-#$%&/()**this is not**yes****
所以我可以把这些结果分开:
This text is bold
abc123*-#$%&/()
yes**
我已经挣扎了好几个小时了,救命啊。
我最亲近的是:
\*\*([^\*]\*)\*\*
实际上,我需要使用 *
内部 **here(*)**
为了获得 here(*)
.
我想得到 123?=)*
结果来自 **123?=)***
.
1条答案
按热度按时间anhgbhbe1#
你可以用
查看regex演示。
等价物是
(?s)\*\*(.*?)\*\*(?!\*)
,请参阅这个regex演示(基于andreas的建议)。但是,这种模式比前一种模式慢1/3左右。细节
\*\*
-a**
子串([^*]*(?:\*(?!\*)[^*]*)*\**)
-第1组:除*
([^*]*
)后面是零次或多次重复的*
但这并不是立即采取行动*
(见\*(?!\*)
)然后是零个或多个非星号字符,然后是任意数量的星号(参见\**
在组模式的末尾)\*\*
-a**
子串这个
(?s)\*\*(.*?)\*\*(?!\*)
相似的是(?s)
是使.
跨行匹配,然后(.*?)
将零个或多个字符匹配并捕获到组1中,尽可能少,直到第一次出现**
不立即跟在后面的文本*
.