-1
votes

Regex correspondant à un ensemble de caractères sur un index donné

J'ai une chaîne et une position dans cette chaîne. Je souhaite savoir si le dernier caractère non espace avant que cette position soit l'un des caractères d'un ensemble donné. Puis-je faire cela en utilisant regex? Je ne pouvais pas comprendre moi-même seul.

exemple avec un ensemble de caractères (?, |,!):

foo ('bla? test', pos = 6) est vrai

foo ('bla? test', pos = 7) est faux


5 commentaires

Il est certainement possible de le faire avec regex ... qu'avez-vous essayé jusqu'à présent?


Vos postes d'index ne correspondent pas aux résultats.


Est POS 0-indexé?


L'index 6 devrait être t dans test . C'est 0-indexé.


@ T.Poe Comment le résultat est-il vrai pour l'index 6?


5 Réponses :


0
votes

supposant que vous voulez 0 chaînes indexées xxx


0 commentaires

1
votes

avec une certaine aide de regex: xxx

. * (\ s) (? = \ s * $) :

  • . * correspond à tous les caractères jusqu'au dernier caractère sans espace

  • (\ s) correspond au dernier caractère non espace et mettez-le dans un groupe capturé

  • la largeur zéro postive lookahead (? = \ s * $) Assure que le motif est suivi d'espaces zéro-more seulement jusqu'à la fin de la fin de la fin


0 commentaires

0
votes

Vous n'avez pas vraiment besoin de regex pour cela. Vous pouvez utiliser très facilement tout et la compréhension de liste . xxx

renvoie true . < P> Changer s [4] sur s [5] Résultats dans False


0 commentaires

0
votes

Vous n'avez pas besoin d'utiliser une regex: xxx

si vous deviez utiliser une regex: xxx


0 commentaires

0
votes

Vous n'avez pas besoin de regex ici. Retirez les espaces à la fin d'une tranche, si elles sont et comparez le dernier char xxx


0 commentaires