I'm so frustrated and lost. I would really appreciate your help here.
I'm trying to fix an issue in Katex and Guppy keyboard. I'm trying to generate a regex to find between the word matrix
and find the slash
that has spaces before and after and replace it with a double slash. The problem I have here is it keeps selecting all slashes between matrix
\left(\begin{matrix} \sqrt[ 5 ]{ 6 \phantom{\tiny{!}}} \ \dfrac{ 55 }{ 66 } \end{matrix}\right)
I want to ignore \sqrt
because the slash doesn't have a couple of spaces on both sides
to something like this
\left(\begin{matrix} \sqrt[ 5 ]{ 6 \phantom{\tiny{!}}} \\ \dfrac{ 55 }{ 66 } \end{matrix}\right)
Here is my current half working code
const regex = /matrix(.*?)\\(.*?)matrix/g;
equation = equation.replace(regex, 'matrix$1\\\\$2matrix');
CodePudding user response:
You can match using this regex:
({matrix}.*? \\)( .*?(?={matrix}))
And replace with: $1\\$2
Code:
var equation = String.raw` \left(\begin{matrix} \sqrt[ 5 ]{ 6 \phantom{\tiny{!}}} \ \dfrac{ 55 }{ 66 } \end{matrix}\right)`;
const re = /({matrix}.*? \\)( .*?(?={matrix}))/g;
equation = equation.replace(re, '$1\\$2');
console.log(equation);
RegEx Breakdown:
({matrix}.*? \\)
: Capture group #1 to match from{matrix}
to\
( .*?{matrix})
: Capture group #1 to match from a single space to{matrix}
- In replacement we insert a
\
between 2 back-references