Regex pour trouver le texte entre la deuxième et la troisième des barres obliques
Je voudrais saisir le texte qui se produit après la deuxième barre et avant la troisième barre oblique dans une chaîne de caractères. Exemple:
/ipaddress/databasename/
J'ai besoin de saisir uniquement le nom de base de données. Le nom de base de données peut contenir des lettres, des chiffres, et des caractères de soulignement. Merci.
Vous êtes garantis d'avoir seulement 3 barres obliques?
à partir de quel contexte utilisez-vous la regexp? le truc avec ces problèmes est généralement de s'échapper les choses correctement, et qui dépend du contexte.
à partir de quel contexte utilisez-vous la regexp? le truc avec ces problèmes est généralement de s'échapper les choses correctement, et qui dépend du contexte.
OriginalL'auteur user2434549 | 2013-05-30
Vous devez vous connecter pour publier un commentaire.
Mode d'accès dépend de votre langue, mais vous aurez essentiellement veux juste un groupe de capture pour tout ce qui se situe entre le deuxième et le troisième "/". En supposant que votre chaîne est toujours dans la même forme que votre exemple, ce sera:
Si plusieurs barres obliques peuvent exister, mais une barre oblique ne peut jamais exister dans le nom de base de données, vous souhaitez:
ne devrait pas faire une différence si l'OP a toujours exactement trois barres obliques, comme je l'ai mentionné. Si elle peut être de forme différente (c'est à dire quatre barres obliques), l'ensemble de la question et la réponse serait de changer, et il avait besoin de spécifier ce qu'il veut arriver dans cette situation (troisième barre oblique devrait ou ne devrait pas être capturé) pour nous de décider qui générique doit être gourmand.
la chaîne ne se continuent avec plusieurs mots et des barres obliques, parfois jusqu'à 10. J'aurais du être plus précis, désolé. un exemple typique pourrait être /ipaddress/base de données/question/question/question/question etc Merci encore.
dans ce cas, vous voulez
/.*/(.*?)/
. J'ai mis à jour la réponse.OriginalL'auteur Eli
Dans le cas où vos lignes ont toujours
/
à la fin de la ligne:Suppléant
split
méthode:OriginalL'auteur Isaac
La regex serait:
donc en Perl, la regex capture d'instruction serait quelque chose comme:
Normalement le
/
caractère utilisé pour délimiter les regexes mais comme ils sont utilisés dans le cadre du match, un autre personnage peut être utilisé. Sinon, le/
personnage peut être échappé:OriginalL'auteur Adrian Pronk
Je sais que vous avez spécifiquement demandé pour les regex, mais vous n'avez pas vraiment besoin de regex pour cela. Vous avez simplement besoin de fractionner la chaîne par des délimiteurs (dans ce cas, une barre oblique inverse), puis sélectionnez la partie dont vous avez besoin (dans ce cas, le 3ème champ - le premier champ est vide).
cut
exemple:awk
exemple:perl
expression, en utilisantsplit
fonction:etc.
OriginalL'auteur doubleDown
Vous pouvez même plus de raccourcir le modèle en aller de cette façon:
Ici
\w
comprend des caractères commeA-Z, a-z, 0-9 and _
Je vous suggère de donner
SPLIT
fonction d'une priorité, car j'ai connu une bonne performance au fil de fonctions RegEx partout où il est possible de les utiliser.OriginalL'auteur NeverHopeless
vous pouvez utiliser
explode
fonction avecPHP
ousplit
avec d'autres langues à une telle opération.de toute façon, ici, c'est regex modèle:
OriginalL'auteur SolidSnake