Elixir: comment compter les URL dans une chaîne

Dyey517

Supposons que j'ai une chaîne:

content = "Please visit https://www.google.com...\nOr visit http://my.website.io\nhttp://myfriends.website.com\nOr https://www.myneigborsite.com, http://visit.me.com"

Il y a 5 URL dans la chaîne.

Comment compter les URL à l'aide de la syntaxe?

J'ai essayé d'utiliser Regex.scan/2 |> Enum.count/1, ou String.split/2 |> Enum.count/1<- avec regex mais j'ai toujours une mauvaise sortie.

J'ai également essayé toutes les expressions régulières http / https que j'ai trouvées sur Internet, mais je ne parviens toujours pas à obtenir la sortie correcte.

En voici un que j'ai essayé.

iex> content
...> |> String.split(~r/^(https?):\/\/[^\s$.?#].[^\s]*$/)
...> |> Enum.count()
...> |> Kernel.-(1)
-1

Un autre avec le même regex.

iex> Regex.scan(~r/^(https?):\/\/[^\s$.?#].[^\s]*$/, content) |> Enum.count()
0

mais quand je vérifie si le regex correspond à certaines des URL

iex> Regex.match?(~r/^(https?):\/\/[^\s$.?#].[^\s]*$/, "https://www.google.com")
true
iex(48)> Regex.match?(~r/^(https?):\/\/[^\s$.?#].[^\s]*$/, "http://my.website.io")
true

Cela correspond. Je n'arrive pas à comprendre quel est le problème. Aidez-moi, s'il vous plaît.

Alexei Matiushkin

Vous ne devez compter que les URL, ce qui signifie que vous n'avez pas besoin d'une expression régulière trop compliquée.

~r|https?://[\w.-]+|
|> Regex.scan(content)
|> Enum.count()
#⇒ 5

Vos tentatives ont échoué car vous avez mis $le matcher EOL dans les expressions, ce qui ne correspond évidemment pas lorsque l'URL ne termine pas la chaîne.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Comment compter les caractères dans l'ordre dans une chaîne?

Comment compter toutes les occurrences d'un mot dans une chaîne en utilisant python

JavaScript: diviser et compter les mots dans une chaîne

Séparer / compter les lignes dans une chaîne

Comment compter les occurrences non spécifiées de sous-chaînes dans une chaîne

Compter les occurrences d'une sous-chaîne dans une chaîne

Comment obtenir une chaîne conviviale pour les URL dans Oracle?

Comment compter les 30 premières lettres d'une chaîne en ignorant les espaces

Compter les modèles de chaîne uniques dans une ligne

Regex: compter les correspondances dans une certaine section d'une chaîne

Apache Nifi: compter les nombres dans une chaîne dans un fichier csv

Comment ajouter une chaîne à une URL dans Golang?

Comment compter les mots d'une chaîne à l'aide de regex

Lambda pour compter les occurrences d'une chaîne dans IEnumerable

Compter les valeurs de chaîne dans une colonne numérique Pandas

compter les mêmes lettres dans une chaîne mais pas sur toute la longueur

Compter les valeurs uniques séparées par des virgules dans une chaîne

Compter l'occurrence de mots d'une colonne de chaîne dans les pandas

Hive: compter les caractères non nuls dans les sous-chaînes d'une chaîne

Comment compter la fréquence d'une chaîne pour chaque ligne dans R

Comment compter le nombre de lignes dans une chaîne en utilisant R?

Comment compter des nœuds spécifiques dans une chaîne XML à l'aide de Ruby?

Comment compter les occurrences dans une colonne dataframe Python

Comment compter les champs dans une agrégation MongoDB?

Comment supprimer toutes les barres obliques dans une chaîne?

Comment obtenir tous les processus dans une chaîne?

Comment remplacer les bonnes lettres dans une chaîne python

Comment gérer les erreurs dans une chaîne f?

Comment convertir une chaîne en URL dans Swift

TOP Lista

CalienteEtiquetas

Archivo