0
votes

Extraire des informations des chaînes

Lors d'une chaîne de formulaire https://website-name.some-domaine.some-sub-domain.com/resourceid code> (type 1) ou https: // Site Web-Name.Some-sub-Domain.com/resourceid?randomContent code> (type 2), j'ai besoin d'extraire seulement deux sous-chaînes. J'ai besoin du nom de site Web code> dans une chaîne et weightid code> dans une autre chaîne.

J'ai extrait le nom du site Web à l'aide du code suivant: P>

s := "https://website-name.some-domain.some-sub-domain.com/resourceId?randomContent"
r := regexp.MustCompile("com/(.*?)\\?")
resource := r.FindStringSubmatch(s)
fmt.Println(resource[1])


4 commentaires

Le Downvoter peut-il s'il vous plaît dire pourquoi la question est mauvaise?


Vérifiez play.golang.org/p/55exidxml5z , fonctionne-t-il comme prévu?


Je ne peux que supposer que sur le vote vers le bas, mais au lieu de faciliter la réponse à votre question (ou simplement de l'identifier, à ce sujet) Vous le faites compliquer.


@Markuswmahlberg Je suppose que ça aussi. La question peut sembler verbeuse. Je voulais juste donner la photo complète quand même.


3 Réponses :


1
votes

Peut-être quelque chose d'aussi simple que cela aidera.

Vous pouvez extraire le nom nom de site Web à l'aide de la regex suivante et de renvoyer le premier groupe: xxx

Vous pouvez extraire le la ressourceID < / EM> Utilisation de la regex suivante et renvoyant également le premier groupe: xxx

Lien vers le terrain de jeu


0 commentaires

1
votes

Je suppose que cette expression pourrait fonctionner: xxx

test xxx

Démo


0 commentaires

3
votes

Les chaînes d'échantillons que vous montrez sont des URL de HTTPS ordinaires, vous pouvez donc utiliser net / URL paquet pour les analyser. Le nom nom de site Web est la première partie du parsedurl.hostname () et le weaturesID est le parsedurl.path moins d'un (code> . xxx

https://play.golang.org/pnfnf2rtbufxr a un exemple complet, y compris les deux chaînes d'URL de la question. Cela fonctionne même si la partie nom d'hôte de l'URL ne se termine pas par .com ou la partie de chemin inclut cette chaîne, ou un numéro de port ou un fragment de hachage, ou d'autres variantes.


2 commentaires

Meilleure réponse. Go est livré avec un paquet natif pour faire exactement cela.


Je marquais cela comme la réponse puisqu'elle est générique et résout également mes problèmes. Merci.