Regex: Retour Un ordre différent des matches dans un seul groupe de capture

Luke Pafford:

Im essayant d'extraire les identités des utilisateurs à partir d'une carte à puce, et je dois correspondre à ce modèle: CN=LAST.FIRST.MIDDLE.0000000000

Et ce résultat ont retourné: FIRST.LAST

Ce serait facile si normalement je faisais dans mon propre code:

# python example
string = 'CN=LAST.FIRST.MIDDLE.000000000'
pattern = 'CN=(\w+)\.(\w+)\.'
match = regex.search(pattern, string)

parsedResult = match.groups()[1] + '.' + match.groups()[0]

Malheureusement, je suis correspondant à un motif en utilisant le formulaire web de Keycloaks X.509 . Je suis limité à l' aide d'une seule expression régulière, et l'expression régulière ne peut contenir un groupe de capture. Ceci est un formulaire HTML donc il n'y a pas de code réel utilisé ici, une seule expression régulière.

Il semble que je dois avoir sous capturer des groupes, et renvoyer le deuxième groupe apparié d'abord, puis le premier groupe apparié, le tout dans le principal groupe de capture. Est-il possible quelque chose comme ça à faire?

De plus, je suppose que nous sommes limités à ce que les caractéristiques sont prises en charge par Java, car c'est ce que les pistes app sur.

Stephan Kulow:

Je ne pense pas que ce soit possible avec un seul groupe de capture. Si je lis correctement la documentation de keycloak, le groupe de capture est en fait le résultat de l'expression régulière. Donc, vous pouvez correspondre première ou la dernière ou les deux dans l'ordre original, mais pas Réorganiser.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=337292&siteId=1
conseillé
Classement