0
votes

Expression régulière pour tout obtenir entre deux caractères / chaînes

J'ai essayé d'utiliser une expression régulière pour extraire des données des chaînes suivantes

  1. LTE_LTE_FSD9167__P_Airport1 Je souhaite extraire le code de site à 7 chiffres (FSD9167) de la chaîne ci-dessus.

  2. RUR1251__S_KhooNaiWala Je souhaite extraire le code de site à 7 chiffres (RUR1251) de la chaîne ci-dessus.

Pour le cas LTE_LTE, j'ai écrit LTE_LTE _ ([^ _;] +). * mais il sélectionne toute la chaîne, y compris non seulement le texte requis.


7 commentaires

Bon à savoir. Quelle est ta question?


Deux exemples ne suffisent pas pour continuer. Quelles sont les règles exactes pour déterminer ce qu'est un code de site et ce qui ne l'est pas? Par exemple "Toute chaîne de 7 caractères dans la plage A-Z et 0-9, entourée par _ ou le début / la fin de la chaîne" ou quelque chose comme ça ("trois lettres majuscules suivies de quatre chiffres" etc.)


Aide à la création d'expression régulière pour extraire les codes de site à 7 chiffres des chaînes mentionnées dans la question.


Je n'obtiendrai que les deux chaînes ci-dessus, l'une commençant par LTE_LTE (LTE_LTE_FSD9167__P_Airport1) et l'autre commençant par le code à 7 caractères (RUR1251__S_KhooNaiWala). Dans le premier cas, je veux extraire 7 caractères après (LTE_LTE) c'est-à-dire FSD9167 et dans le second cas les 7 premiers caractères (c'est-à-dire RUR1251) @TimPietzcker


Vous devrez nous montrer ce que vous avez essayé de réaliser. SO n'est pas un service d'écriture de regex.


Pour le cas LTE_LTE, j'ai écrit LTE_LTE _ ([^ _;] +). * Mais je sélectionne la chaîne entière, y compris non seulement le texte requis. @ CinCout


À l'avenir, veuillez modifier la question pour inclure vos tentatives. Je l'ai fait pour vous cette fois.


4 Réponses :


-1
votes

Vous pouvez utiliser quelque chose comme ceci:

^ (?: LTE_LTE _)? (\ S {7}) \ S * $ / g

Ceci capture les sept caractères non blancs au début (cas 2) ou juste après LTE_LTE_

Démo


0 commentaires

-1
votes

Vous n'avez fourni aucune règle sur l'apparence du code. J'ai remarqué que les deux codes que vous avez fournis dans l'exemple comportent 3 lettres suivies de 4 chiffres. J'ai fait une règle plus générique, avec au moins 2 lettres suivies d'au moins 3 chiffres.

L'expression régulière est:

[a-zA-Z]{2,}\d{3,}

Test ici .


0 commentaires

-1
votes

Comme vous ne voulez faire correspondre que ces 2 chaînes, utilisez:

(?<![A-Z0-9])       # negative lookbehind, make sure we haven't alphanum before
[A-Z0-9]{7}         # 7 alphanumerics
(?![A-Z0-9])        # negative lookahead, make sure we haven't alphanum after

Explication:

(?<![A-Z0-9])[A-Z0-9]{7}(?![A-Z0-9])

Démo


1 commentaires

Downvoter en série en action. Toutes les réponses ont été rejetées en même temps!



0
votes

Le modèle que je vois est composé de trois lettres suivies de quatre chiffres, donc:

const regex = /(\w{3}\d{4})/gm;

Utilisez () pour capturer le modèle:

$re = '/(\w{3}\d{4})/m';

PHP:

(\w{3}\d{4})

JavaScript:

\w{3}\d{4}

Utilisez https://regex101.com/ pour en savoir plus.


0 commentaires