Il s'agit plus d'une question d'expression régulière générique que d'une question spécifique à PHP.Regex analysant une syntaxe de chaîne personnalisée en PHP
Je me donne différentes chaînes qui peuvent ressembler à:
A/B/PA ID U/C/D
Et je suis en train d'extraire le segment des barres obliques moyen qui a des espaces ("/ PA ID U") en utilisant:
preg_match('/(\/PA .+)(\/.+|$)/', '', $matches);
Cependant, au lieu d'obtenir "/ PA ID U" comme je m'y attendais, je recevais "/ PA ID U/C/D".
Comment puis-je lui donner la priorité en faisant correspondre "/.+" à "$" dans ce dernier groupe?
Notes complémentaires:
j'ai besoin que le dernier groupe pour correspondre soit une autre «/somethingsomthing » ou « » parce que la chaîne varie beaucoup. Si je ne fais que correspondre au "/.+", je ne pourrai pas obtenir le "/ PA ID U" s'il est en fin de ligne, comme dans "A/B/PA ID U".
Fondamentalement, je dois être en mesure d'extraire des segments spécifiques comme ceci:
Étant donné:
"A/B/PA ID U/PA ID U/C/D"
Extrait:
(A), (B), (PA ID U), (PA ID U), (C), (D)
[UPDATE]
J'essaie d'éviter d'utiliser split() ou explode() car cela signifierait que je dois faire correspondre le motif "PA ID U" séparément. En plus de simplement extraire les segments séparés par des barres obliques, j'ai besoin de valider que les sous-chaînes correspondent à des modèles spécifiques.
Exactement ce dont j'avais besoin! Merci! : D J'ai aussi trouvé cette solution exacte dans http://www.regular-expressions.info/repeat.html –
Je suis un peu perdu ici. Je ne peux pas obtenir cette regex pour extraire le donné "A/B/PA ID U/PA ID U/C/D" en (A), (B), (PA ID U), (PA ID U), (C), (D). Quelle saveur de regex php utilise-t-il? Perl? Pythong? Tout autre? –
preg_match est implémenté comme un appel à libpcre. PCRE = Expressions régulières compatibles Perl – wuputah