0
votes

Faire partie d'une chaîne à l'aide d'une regex dans la fléchette

J'ai cette phrase Commerce_Product - Par défaut que je veux extraire uniquement la dernière partie, alors ici Par défaut , pour le faire, j'utilise cette regex Regexp (r '- \ s * \ k [^ -] + $')

maintenant j'essaie de l'afficher dans mon code mais je n'ai pas trouvé la méthode pour le faire, je "J'ai essayé avec StringMatch ou remplacé comme ceci: xxx

mais il n'a pas fonctionné.
Merci pour l'aide


1 commentaires

Pourquoi ne remplacez-vous pas avant le dernier - avec une chaîne vide? ^. * -


3 Réponses :


1
votes

Vous utilisez un modèle PCRE qui n'est pas pris en charge dans DART REGEX. Vous pouvez utiliser

final type = 'commerce_product--default';
final newType = RegExp(r'-\s*([^-]+)$').firstMatch(type);
if (newType!=null) {
  print(newType.group(1));
}


1 commentaires

Oh merci pour les informations! Je n'ai pas encore travaillé avec Dart Beaucoup et je ne le savais pas. Assez drôle, j'ai la regex de l'une de votre réponse aussi ahaha! Juste testé et ça marche comme prévu, merci!



1
votes

Pour remplacer tout avant la dernière occurrence de - code> Vous pouvez également correspondre à la ligne entière jusqu'à la dernière survenue et affirmer que ce qui suit est de plus de 1 fois tout type sauf - code> jusqu'à la fin de la chaîne.

dans le remplacement, utilisez une chaîne vide. P>

default


2 commentaires

Merci pour votre commentaire! En effet, cela fonctionne exactement comme la première réponse, mais il utilise un peu moins de code alors je l'utiliserais à la place!


@StefanyOYC Il convient de noter que cette application nécessite un motif de réégyvalité quelque peu complexe pour correspondre mais est assez trivial à l'aide de moyens non réégyts. (Voir la réponse de l'IRN)



2
votes

Pour tout correspondre après le dernier - , vous devez simplement correspondre à tous les caractères non- - - - xxx

Ceci correspond à tous Fonctionnement non- - caractères.

Si la chaîne ne contient aucun - , il correspond à la chaîne entière. Si vous souhaitez une non-correspondance dans ce cas, vous pouvez mettre en œuvre le ? : xxx

Cela nécessiterait un caractère moins avant Le match.

J'aurais probablement omettre entièrement la réégycle et le faire avec le code: xxx


0 commentaires