Je travaille avec une bibliothèque tierce qui concaténe une chaîne avec un double côlon Ie p> Remarque: le texte sur le côté droit ne contient aucun J'ai besoin d'écrire une regex pour obtenir le texte à droite. P> :: code>. J'ai besoin de diviser cette chaîne parce que l'élément du côté droit est important pour moi, mais la gauche n'a pas d'importance.
: code> caractères p>
var string = ":this:should:split::correctly:::and-return-this"
3 Réponses :
Essayez cette regex: test sur Regex101.com < / a> p> p>
Cela ne fonctionnera pas s'il y a un : code> dans la pièce après le dernier
:: code>
Vous pouvez faire cela à l'aide des fonctions de regex ou de chaîne:
regex: strong> p> p>
:: code> strong> - Utilisez
:: (. +) code> - Cela fonctionnera même si la chaîne commence par
:: code> li>
^. * :: (. *) - Cela fonctionnera pour des chaînes avec
: code> après le dernier
:: code>, mais il ne retournera rien si les derniers caractères sont
:: CODE> li>
ul>
var string = ":this:should:split::correctly:::and-return-this";
var result = string.slice(string.indexOf('::') + 2, string.length);
console.log("After first occurrence = " + result);
result = string.slice(string.lastIndexOf('::') + 2, string.length);
console.log("After last occurrence = " + result);
var string = ":this:should:split::correctly:::and-return:this";
result = string.slice(string.lastIndexOf('::') + 2, string.length);
console.log("Single : in last part = " + result);
var string = ":this:should:split::correctly:::and-return-this:";
result = string.slice(string.lastIndexOf('::') + 2, string.length);
console.log("Ends with : = " + result);
var string = ":this:should:split::correctly:::and-return-this::";
result = string.slice(string.lastIndexOf('::') + 2, string.length);
console.log("Ends with :: = " + result);
var string = "::this:should:split::correctly:::and-return-this";
result = string.slice(string.indexOf('::') + 2, string.length);
console.log("Starts with :: = " + result);
Vous pourriez séparer sur un double côlon et affirmer ce qui est à gauche et à droite est n'importe quel caractère sauf un côlon.
(?<!:)::(?!:)
J'ai également envisagé d'utiliser Split comme une option pour ma réponse aussi, mais cela ne fonctionne pas bien pour la chaîne d'échantillonnage dans la question ": ceci: devrait: Split :: correctement ::: et-retour-this" - il inclut le Extra : code> :)
Vous voulez que le résultat est
et-retour-this code> ou
correctement ::: and-return-this code>?
Étant donné que votre réponse à la question de Namgold est la dernière option, vous pourriez faire quelque chose comme ceci:
laissera Afterdubcol = str.replace (/^.*:: 0.*)$/, '$ 1'); code >
William, pouvez-vous nous faire savoir si vous recherchez la chaîne après la dernière occurrence de
:: code> même s'il a un
supplémentaire: code> pour retourner
et retourner -C'est code> (comme les réponses ci-dessous le font) ou souhaitez-vous ignorer le
::: code> et obtenir la dernière occurrence de
:: code> pour revenir
correctement ::: and-return-this code>?