Home > Software engineering >  How to use regex to find in between words and spaces?
How to use regex to find in between words and spaces?

Time:12-09

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

RegEx Demo

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
  • Related