定期预期匹配数学模块

问题描述:

您好,我需要匹配字符串中的数学模块。数学模块以$$开始,以$$结束。可以有任意数量的数学块。定期预期匹配数学模块

例如输入可以关注一下:

abcd... asdfasdf 
$$ 
math expression 
$$ 
<another set of random words> 
$$ 
expression 
$$ 
... 

什么是正确的正则表达式只匹配的数学表达式?

谢谢。

+0

喜欢[此](https://regex101.com/r/sNmGqD/1)? – Gurman

+0

@Gurman这可能是一个问题,在$ $$中找到一个'$'。 –

+0

@TomFenech你是对的。我只是假定表达式块中不会有'$'。 – Gurman

我不知道什么是打字稿,但是我查了一下它就像是javascript。你为什么不使用新的RegExp()? 像新的RegExp(/^\$\$.+\$\$$/ g).exec(你的str) Char。+会检测任何字符等等,直到它在最后找到$为止。你可以进入你的具体病情此匹配

假设每一奇数$$开始一个数学模式块,每个偶数一个结束前一个块,你可以只劈在$$串并采取奇数组的元素:

> str=`abcd... asdfasdf 
$$ 
math expression 
$$ 
<another set of random words> 
$$ 
expression 
$$` 
> str.split("$$").filter((s, index) => index % 2 === 1) 
Array [ " math expression ", " expression " ] 

阵列仍包含了前端和后端的空间 - 你可以用String.trim摆脱他们的。

+0

我认为分割对我来说是最合适的选择。谢谢。 – Prasad

你可以尝试/\$\$((?:\$[^\$]|[^\$])+)\$\$/g,这将匹配$$和$$之间的任何内容,包括单个$。

实施例: http://regexr.com/3gu75

let text = document.body.innerHTML; 
 

 
let regex = /\$\$((?:\$[^\$]|[^\$])+)\$\$/g, 
 
    match; 
 

 
while((match = regex.exec(text)) != null) { 
 
    console.log(match[1].trim()); 
 
}
abcd... asdfasdf 
 
$$ 
 
math expression 
 
$$ 
 
another set of random words 
 
$$ 
 
expression 
 
$$ 
 

 
$$ 
 
expression with a $ symbol 
 
$$