0
votes

Capturer le caractère avant la regex

J'ai une question rapide sur une regex que j'ai écrite dans JavaScript. C'est le (? <=,) (. *) (? = :) et il capture tout entre , et . Je le veux, cependant, de capturer la virgule elle-même aussi, comme dans.

donc, << C'est ce que mon regex capture pour le moment >>: fin deviendrait

SO <<, c'est ce que mon regex capture en ce moment >>: fin .

J'ai essayé d'utiliser un . avant le , dans la regex mais cela ne semble pas fonctionner.


2 commentaires

Comme Regex101.com/r/evg4kf/1 ? Ou Regex101.com/r/evg4kf/2 .


Peut-être , [^:] + ou si vous souhaitez utiliser le groupe de capture (,. *?):


3 Réponses :


0
votes

Utilisez un simple groupe de capture - il est plus court que votre regex actuel et fonctionne parfaitement:

p>

var regex = /(,.*?):/g;
var string = "So,<< this is what my regex captures at the moment>>: end";
console.log(string.match(regex));


0 commentaires

0
votes

En supposant que les deux flèches sont destinées à indiquer le début et à la fin de votre motif actuel, vous pouvez correspondre à la virgule, puis plus de 1 fois pas une virgule à l'aide d'une classe de caractères annulée:

const regex = /(,[^:]+):/;
const str = `So,<< this is what my regex captures at the moment>>: end`;
let res = str.match(regex);
console.log(res[1]);


0 commentaires

0
votes

Comme vous l'avez dit:

Alors, >: la fin deviendrait Donc >: fin. P> blockQuote>

Vous pouvez utiliser remplacer code> comme ceci: p>

p>

var str = `So,<< this is what my regex captures at the moment>>: end`;
var replace = str.replace(/(.*?)(,)(<<)(.*)/,"$1$3$2$4");
console.log(replace);


0 commentaires