Regex für den Twitter-Benutzernamen

Lesezeit: 1 Minute

Regex fur den Twitter Benutzernamen
Juanjo Conti

Könnten Sie eine Regex bereitstellen, die mit Twitter-Benutzernamen übereinstimmt?

Extrabonus, wenn ein Python-Beispiel bereitgestellt wird.

  • Welche Einschränkungen gelten für einen Twitter-Benutzernamen?

    – David Kanarek

    21. Februar 10 um 3:22 Uhr


  • Siehe Antwort von @rayfranco für Spezifikation.

    – scharfmn

    25. Februar 15 um 10:15 Uhr


1642828566 342 Regex fur den Twitter Benutzernamen
Engel.König.47

(?<=^|(?<=[^a-zA-Z0-9-_.]))@([A-Za-z]+[A-Za-z0-9-_]+)

Ich habe dies verwendet, da es E-Mails ignoriert.

Hier ist ein Beispiel-Tweet:

@Hallo, wie geht es @dir @mein_Freund, sende eine E-Mail an @000 an mich @ [email protected] @shahmirj

Streichhölzer:

  • @Hallo
  • @Sie
  • @mein Freund
  • @Schahmirj

Es funktioniert auch für Hashtags, ich verwende den gleichen Ausdruck mit dem @ gewechselt zu #.

  • Sehr gut! Nur eine Korrektur: hastags und screenNames können beide Unterstriche haben. Ich würde es so hinzufügen, dass die resultierende Regex so lautet: (?<=^|(?<=[^a-zA-Z0-9-.]))#([A-Za-z]+[A-Za-z0-9-]+)

    – Backslash17

    22. Juni 12 um 2:31 Uhr


  • Außerdem kann der Unterstrich am Anfang des Benutzernamens stehen: (?<=^|(?<=[^a-zA-Z0-9-.]))#([A-Za-z_]+[A-Za-z0-9_]+)

    – NZal

    9. Juli 13 um 8:04 Uhr

  • Anwenden der Antwort auf 'RT @daddy_san: RIGHT IN THE FEELS BRUH gibt nur @daddy als Antwort.

    – fixer

    5. Juni 15 um 10:34 Uhr


  • Versuchen (?<=^|(?<=[^a-zA-Z0-9-_.]))@([A-Za-z]+[A-Za-z0-9_]+)

    – Engel.König.47

    5. Juni 15 um 13:01 Uhr


  • @000 sollte ebenso abgefangen werden wie Bildschirmnamen mit Unterstrich (wie von @backslash17 und @fixxxer erwähnt). Und es werden keine Hashtags einfach durch einfaches Raplacing von @ mit # abgefangen, da Hashtags auch Unicode enthalten können. So sollte der Ausdruck für Erwähnungen lauten (?<=^|(?<=[^a-zA-Z0-9-.]))@([A-Za-z0-9_]+)

    – rokh

    16. August 15 um 8:11 Uhr

Wenn Sie über die sprechen @username Sache, die sie auf Twitter verwenden, dann können Sie dies verwenden:

import re
twitter_username_re = re.compile(r'@([A-Za-z0-9_]+)')

Um jede Instanz zu einem HTML-Link zu machen, könnten Sie etwa so vorgehen:

my_html_str = twitter_username_re.sub(lambda m: '<a href="http://twitter.com/%s">%s</a>' % (m.group(1), m.group(0)), my_tweet)

  • Gibt es eine offizielle Vorgabe?

    – Juanjo Conti

    21. Februar 10 um 3:28 Uhr

  • Nein, aber ich weiß, dass Twitter-Benutzernamen alphanumerische Zeichen und Unterstriche enthalten können, und wenn sie etwas anderes zulassen, wird dies in freier Wildbahn nicht häufig gesehen.

    – icktoofay

    21. Februar 10 um 3:29 Uhr

  • Ich liebe dich, aber das ist nicht richtig. Nun, das ist es, aber es werden auch E-Mail-Adressen erfasst, und Twitter tut das nicht.

    – Engel.König.47

    15. Dezember 11 um 11:01 Uhr

  • Fängt E-Mail-Adressen an. Verwenden Sie Regex (?<=^|(?<=[^a-zA-Z0-9-\.]))@([A-Za-z]+[A-Za-z0-9]+) von Angel.King.47 unten.

    – Superkobra

    7. April 13 um 12:57 Uhr


1642828566 843 Regex fur den Twitter Benutzernamen
rayfranco

Die Regex, die ich verwende und die in mehreren Kontexten getestet wurden:

/(^|[^@w])@(w{1,15})b/

Dies ist der sauberste Weg, den ich gefunden habe, um den Twitter-Benutzernamen in Zeichenfolgen zu testen und zu ersetzen.

#!/usr/bin/python

import re

text = "@RayFranco is answering to @jjconti, this is a real '@username83' but this is [email protected], and this is a @probablyfaketwitterusername";

ftext = re.sub( r'(^|[^@w])@(w{1,15})b', '\1<a href="http://twitter.com/\2">\2</a>', text )

print ftext;

Dies wird mich wie erwartet zurückgeben:

<a href="http://twitter.com/RayFranco">RayFranco</a> is answering to <a href="http://twitter.com/jjconti">jjconti</a>, this is a real '<a href="http://twitter.com/username83">username83</a>' but this is [email protected], and this is a @probablyfaketwitterusername

Beyogen auf Twitter-Spezifikationen :

Ihr Benutzername darf nicht länger als 15 Zeichen sein. Ihr richtiger Name kann länger sein (20 Zeichen), aber Benutzernamen werden der Einfachheit halber kürzer gehalten. Ein Benutzername darf nur alphanumerische Zeichen (Buchstaben AZ, Zahlen 0-9) mit Ausnahme von Unterstrichen enthalten, wie oben erwähnt. Stellen Sie sicher, dass Ihr gewünschter Benutzername keine Symbole, Bindestriche oder Leerzeichen enthält.

  • Das sauberste. Schönes Posting von spec.

    – scharfmn

    25. Februar 15 um 10:13 Uhr


  • danke, das ist großartig! …außer es stimmt fälschlicherweise mit Benutzernamen in Medium-URLs überein, z medium.com/@p5d12000/xyz. Hier ist eine modifizierte Version, die das behebt: (^|[^w@/!?=&])@(w{1,15})b. (Twitter selbst ist immer noch besser – es verlinkt nur die @-Erwähnung automatisch automatisch /@abc, und die vollständige URL in https://medium.com/@abc – aber na ja.)

    – Ryan

    22. November 17 um 16:33 Uhr


Regex fur den Twitter Benutzernamen
Evan

Twitter vor kurzem veröffentlicht zu Open Source in verschiedenen Sprachen, darunter Java, Ruby (Juwel) und Javascript-Implementierungen des Codes, den sie zum Auffinden von Benutzernamen, Hashtags, Listen und URLs verwenden.

Es ist sehr an regulären Ausdrücken orientiert.

Die einzigen Zeichen, die im Formular akzeptiert werden, sind AZ, 0-9 und Unterstrich. Bei Benutzernamen wird nicht zwischen Groß- und Kleinschreibung unterschieden, obwohl, so dass Sie verwenden könnten r'@(?i)[a-z0-9_]+' um alles richtig abzugleichen und auch zwischen Benutzern zu unterscheiden.

  • Es macht keinen großen Unterschied, dass sie nicht zwischen Groß- und Kleinschreibung unterscheiden. (?i) bezieht sich auf Ihr Muster, nicht auf den Wert, den Sie erfassen. Es ist immer noch Sache des Programms, ABC und Abc als denselben Wert zu behandeln.

    – Köbi

    21. Februar 10 um 5:32 Uhr

1642828567 71 Regex fur den Twitter Benutzernamen
Chris Clouten

Dies ist eine Methode, die ich in einem Projekt verwendet habe, das das Textattribut eines Tweet-Objekts nimmt und den Text mit den Hashtags und user_mentions zurückgibt, die mit den entsprechenden Seiten auf Twitter verknüpft sind, wobei die neuesten Twitter-Anzeigerichtlinien eingehalten werden

def link_tweet(tweet):
"""
This method takes the text attribute from a tweet object and returns it with
user_mentions and hashtags linked
"""
tweet = re.sub(r'(A|s)@(w+)', r'1@<a href="http://www.twitter.com/2">2</a>', str(tweet))
return re.sub(r'(A|s)#(w+)', r'1#<a href="http://search.twitter.com/search?q=%232">2</a>', str(tweet))

Sobald Sie diese Methode aufgerufen haben, können Sie den Parameter my_tweet übergeben[x].Text. Hoffe, das ist hilfreich.

  • Es macht keinen großen Unterschied, dass sie nicht zwischen Groß- und Kleinschreibung unterscheiden. (?i) bezieht sich auf Ihr Muster, nicht auf den Wert, den Sie erfassen. Es ist immer noch Sache des Programms, ABC und Abc als denselben Wert zu behandeln.

    – Köbi

    21. Februar 10 um 5:32 Uhr

1642828567 658 Regex fur den Twitter Benutzernamen
Kasraf

Kürzer, /@([w]+)/ funktioniert gut.

  • du fehlst ‘‘ und Zeichen mit Akzenten auf diesem. füge das Äquivalent von p{L} in Python hinzu und ‘

    – Gubatron

    17. Mai ’12 um 18:07 Uhr

  • Sind sie normalerweise in Benutzernamen auf Twitter enthalten? Ich glaube nicht, dass er auf sie aufpassen muss. Natürlich würde es die Flexibilität erhöhen, denke ich

    – Kasraf

    28. Mai 2012 um 20:48 Uhr

.

585670cookie-checkRegex für den Twitter-Benutzernamen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy