2008-11-20 7 views
0

besoin de localiser le motif suivant:Locate Pattern la lettre que je suivi d'un espace puis trois alpha numerics suivi d'un espace

La lettre que je suivi d'un espace puis trois alpha numerics suivis d'un espace

"J'AIN" "Je H21" "Je 31M"

ces éléments sont également suivis par une latitude/longitude qui est pris au piège par cette expression:

Dim regex As New regex ("\ d {6 } \ d {7} ")

peut les expressions être combinés pour retourner un match qui ressemblerait à:

"H21 ###### #######"

Merci,

Dave

Répondre

4

/I ([0-z] {3} \ d {6} \ d {7})/

Je ne sais pas VB, mais regex travaillerait avec perl dire.

Mise à jour:
Compte tenu de la nouvelle chaîne a fourni .. quelque chose comme ça peut travail (en fonction des réponses à mes questions)

/^[A-z] ([0-z]{3}) [A-z] [0-z]{3} L (\d{6} \d{7})/

Matches serait alors joint (1 correspondance contenant l'AAA, match 2 contenant le Lat/Long).

Mise à jour # 2:
De OP: Non sur le motif. Le seul motif est I AAA puis sur la même ligne le 4000931 0892006. Pouvez-vous ajouter une instruction OR à une expression?

Vous pouvez ajouter un OU, en quelque sorte, mais je ne suis pas certain que ce soit vraiment ce que vous voulez ? Cette nouvelle expression rationnelle correspondra à I, suivi d'un espace, suivi de trois caractères alphanumériques, puis de «n'importe quoi» et de lat/long. Notez que s'il y a des données dans le fichier ou tout ce que vous êtes en train d'analyser qui corresponde à une ligne comme celle-là (en ce sens qu'il s'agit de "autres" données mais suit un modèle similaire), vous l'attraperez probablement aussi.

/^I ([0-z]{3}) .* (\d{6} \d{7})/

1
I ([a-zA-Z\d]{3} \d{6} \d{7}) 

Le groupe de correspondance 1 contient les trois caractères alphanumériques plus les nombres que vous avez déjà saisis avec votre autre expression rationnelle.

EDIT: Ne fonctionne pas car le motif décrit dans la question ne reflète pas ce que l'auteur voulait dire en premier lieu. Ce qui a vraiment été signifié a d'abord été clarifié dans les commentaires.

+0

I AAA B SP2 L ** 400931 0892006 ** V 006 00 J SPI 'LOGAN CO 10233 10817703- Le texte que je suis en train de capturer est AAA et 400931 0892006 de la chaîne ci-dessus. Je ne reçois aucun match retourné. – user38349

+0

Désolé, il n'y a pas ** avant le Lat et Lon 400931 0892006. La chaîne que nous essayons d'extraire est. I AAA B SP2 L 400931 0892006 V 006 00 J SPI 'LOGAN CO 10233 10817703- – user38349

+0

Cette entrée ne correspond pas au modèle décrit dans votre message d'origine. C'est pourquoi vous ne voyez pas d'allumettes. – GalacticCowboy