Je vais essayer de mieux m'expliquer ;-). J'utilise RegexBuddy pour essayer de trouver la solution. La cible est JavaScript dans un widget Konfabulator.JavaScript syntaxe RegExp question
La chaîne que je dois analyser est:
+++++++++++++++++++++ RUNWAY ++++++++++++++++++++++++++++++
1A1093/11 VALID: 1107140300 - 1108301500
DAILY 0300-1500
WIP 90M S OF RWY 08/26 AT E, W1, W2.
NO RESTRICTION DRG TKOF/LDG OR TAX.
1A994/11 VALID: 1106201300 - 1112312059
PAPI RWY 08 NOT OPR WHEN ILS APCH IN USE. OPR WHEN VIS APCH IN
USE.
1A987/11 VALID: 1106190615 - UFN
ILS DME RWY 08 BC 110.90MHZ CH46X OPR.
+++
Le résultat final devrait être les trois sous-chaînes suivantes:
sous-chaînes 1)
1A1093/11 VALID: 1107140300 - 1108301500
DAILY 0300-1500
WIP 90M S OF RWY 08/26 AT E, W1, W2.
NO RESTRICTION DRG TKOF/LDG OR TAX.
sous-chaînes 2)
1A994/11 VALID: 1106201300 - 1112312059
PAPI RWY 08 NOT OPR WHEN ILS APCH IN USE. OPR WHEN VIS APCH IN
USE.
Substring 3)
1A987/11 VALID: 1106190615 - UFN
ILS DME RWY 08 BC 110.90MHZ CH46X OPR.
Comme vous pouvez le voir chaque section commence par quelque chose de similaire à "1A987/11 VALIDE:" que je trouve en utilisant cette expression rationnelle:
[0-9A-Z]{3,6}/\d{2}\s{1,3}VALID:
Chaque section se termine avec la "1A987/11 VALIDE:" de la section suivante ou "+++" que je trouve en utilisant cette expression rationnelle:
([0-9A-Z]{3,6}/\d{2}\s{1,3}VALID:)|(\+{3})
les caractères sont entre [\ s \ s] +? la "." ne fonctionne pas pour une raison quelconque.
Ainsi, le regex complet est:
[0-9A-Z]{3,6}/\d{2}\s{1,3}VALID:[\s\S]+?(([0-9A-Z]{3,6}/\d{2}\\s{1,3}VALID:)|(\+{3}))
Maintenant, depuis la fin de 1 est le sous-chaîne début de 2 sous-chaîne, RegexBuddy ne trouve pas 2 sous-chaîne, sous-chaîne seulement 1 et 3 sont trouvés.
Je cherche un moyen de trouver les 3 sous-chaînes, donc un moyen de trouver la fin de chaque sous-chaîne, mais de l'exclure de la chaîne elle-même.
S'agit-il d'un décodeur NOTAM? –