定期预期匹配数学模块
问题描述:
您好,我需要匹配字符串中的数学模块。数学模块以$$开始,以$$结束。可以有任意数量的数学块。定期预期匹配数学模块
例如输入可以关注一下:
abcd... asdfasdf
$$
math expression
$$
<another set of random words>
$$
expression
$$
...
什么是正确的正则表达式只匹配的数学表达式?
谢谢。
答
我不知道什么是打字稿,但是我查了一下它就像是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
,这将匹配$$和$$之间的任何内容,包括单个$。
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
$$
喜欢[此](https://regex101.com/r/sNmGqD/1)? – Gurman
@Gurman这可能是一个问题,在$ $$中找到一个'$'。 –
@TomFenech你是对的。我只是假定表达式块中不会有'$'。 – Gurman