Comment faire correspondre un dièse (#) dans une regex en php (pour hashtags)
Très simple, j'ai besoin de correspondre à la #
symbole à l'aide d'une expression régulière. Je suis en train de travailler sur un hashtag détecteur.
J'ai essayé de chercher dans google et dans le débordement de la pile. Un poste est ici, mais depuis il voulait supprimer le symbole # à partir de la chaîne, il n'a pas utiliser des regex.
J'ai essayé les regexes /\b\#\w\w+/
, et /\b#\w\w+/
et ils ne travaillent pas et, si je retire la #
, il détecte le mot.
- Avez-vous essayé d'y échapper?
'\#'
- s'il vous plaît poster un exemple de texte que vous voulez trouver. votre problème n'est pas susceptible d'être le symbole"#", mais plutôt l'expression régulière que vous êtes en l'intégrant à l'intérieur.
- on dirait qu'il l'a fait, dans la première regex il a posté.
- Il a édité le post! J'en suis sûr! 🙂
- Vous avez probablement confondre ce
\b
moyens. - Pourquoi voulez-vous utiliser une regex à tous?
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de s'en échapper (c'est probablement le
\b
c'est de le jeter off):#
n'a pas de signification particulière dans une expression régulière, à moins de l'utiliser comme délimiteur. Donc, il suffit de le mettre directement dans et cela devrait fonctionner.Noter que
\b
détecte une limite de mot, et dans#abc
, le mot frontière est après la#
et avant laabc
. Par conséquent,vous devez utiliserle\b
est superflu et vous avez juste besoin#\w\w+
.\w
deux fois? Ne pas\w+
une ou plusieurs?\w{2,}
pour dire "deux ou plus".\b
dans#\b\w
est évidemment superflu.Avec le commentaire sur la précédente réponse, vous voulez éviter une correspondance
x#x
.Dans ce cas, vous n'avez pas besoin
\b
mais\B
:\B#(\w\w+)
(si vous en avez vraiment besoin de deux ou plusieurs caractères de mot après le #).
La
\B
signifie la NON-limite de mot, et depuis#
n'est pas un caractère de mot, cela correspond exactement si le caractère précédent n'est pas un caractère de mot.Vous pouvez utiliser la regex suivante:
/\#(\w+)/
pour correspondre à un hashtag avec juste le hashtag mot, ou:/\#\w+/
va correspondre à l'ensemble du hashtag y compris la table de hachage.Pour ce qu'il vaut j'ai seulement réussi à correspondre à un dièse(#) caractère d'une chaîne. Dans awk l'analyseur prend les commentaires que la première chose. La seule syntaxe qui peut "tenir" un # est
Donc dans mon cas j'ai pris sortie avec uniquement des commentaires comme:
J'ai également essayé de faire le hash d'une expression régulière:
... Ce aussi œuvres. Donc, je pense vous mettre l'ensemble de l'expression dans une chaîne de caractères comme: HASH_PATTERN.
La chaîne est égale fonctionne assez bien. Ce n'est pas une solution parfaite, juste un démarreur.