J'ai une question rapide sur une regex que j'ai écrite dans JavaScript. C'est le J'ai essayé d'utiliser un (? <=,) (. *) (? = :) code> et il capture tout entre , code> et code>. Je le veux, cependant, de capturer la virgule elle-même aussi, comme dans. P>
donc, << C'est ce que mon regex capture pour le moment >>: fin code> deviendrait p>
SO <<, c'est ce que mon regex capture en ce moment >>: fin code>. p>
. code> avant le , code> dans la regex mais cela ne semble pas fonctionner. P>
3 Réponses :
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));
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]);
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);
Comme Regex101.com/r/evg4kf/1 ? Ou Regex101.com/r/evg4kf/2 .
Peut-être
, [^:] + code> ou si vous souhaitez utiliser le groupe de capture(,. *?): Code>