2017-08-10 14 views
1

J'ai un identifiant qui contient des lettres ou des chiffres et des tirets. Ce que je voudrais faire est de garder les 3 premières lettres avant le premier tiret et supprimer le reste, puis garder les 2 premières lettres après le premier tiret.RegEx qui conserve les 3 premiers caractères et supprime le reste

Par exemple, j'ai l'id suivante:

9D3236A9-B496-4597-87E4-3A3FB69D07BF 

L'ID de sortie doit être: 9D3B445873A3.

J'ai essayé:

^.{3}\- 

, mais rien ne se passe. Pouvez-vous s'il vous plaît aider avec ça?

+0

Vous gardez 3A3' trois lettres 'dans la dernière partie. Cela fait-il partie de votre désir? – Kasramvd

+0

Cela pourrait ressembler à [ceci] (https://regex101.com/r/IkiOer/1). Ou comme [ceci] (https://regex101.com/r/IkiOer/3). Ou [ceci] (https://regex101.com/r/IkiOer/4). Eh bien, votre commentaire (sans les tirets) n'est pas clair. Si vous avez besoin de '9D3B445873A3', indiquez simplement que vous avez besoin de cette sortie. –

+0

@ WiktorStribiżew Bonne réponse. J'ai besoin exactement de l'expression rationnelle que vous m'avez donnée mais la sortie ne devrait pas avoir de tirets. Ce devrait être exactement ce que vous mentionnez dans votre dernière ligne. (9D3B445873A3) Pensez-vous que vous pouvez fournir une regex pour cela aussi? – JustCodingPlease

Répondre

1

Vous pouvez utiliser

^([A-Za-z0-9]{3})[A-Za-z0-9]*|-([A-Za-z0-9]{3})[A-Za-z0-9]*$|-([A-Za-z0-9]{2})[A-Za-z0-9]* 

Remplacer par $1$2$3. Voir le regex demo.

Détails

  • ^ - début de la chaîne
    • ([A-Za-z0-9]{3}) - Groupe 1 ($1 dans le remplacement): 3 caractères alphanumériques
    • [A-Za-z0-9]* - 0+ Alphanumériques
  • | - ou
    • - - un trait d'union
    • ([A-Za-z0-9]{3}) - Groupe 2 ($2 dans le remplacement): 3 caractères alphanumériques
    • [A-Za-z0-9]* - 0+ alphanumériques
    • $ - fin de chaîne
  • |
    • - - un trait d'union
    • ([A-Za-z0-9]{2}) - Groupe 3 ($3 dans le remplacement): 2 caractères alphanumériques
    • [A-Za-z0-9]* - 0+. Alphanumériques
0

Vous pouvez utiliser l'expression rationnelle donnée dans ce demo

(^.{3})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-z0-9A-Z]*((?>-).{2})[a-zA-Z0-9]*