Grundlegende reguläre Ausdrücke in Ruby mit gsub

Reguläre Ausdrücke (verkürzt auf regex) werden verwendet, um Muster in Zeichenfolgen zu bearbeiten. Sie können bestimmte Teile von Zeichenfolgen finden, ersetzen oder entfernen, je nachdem, was Sie ihnen sagen. In Ruby sind sie immer in zwei Schrägstrichen enthalten.

Zum Beispiel mit dem .gsub-Methode für Strings:

sentence = "This is a sample sentence."
sentence.gsub(/a/, "") #returns "This is smple sentence."

Das .die gsub-Methode findet alle a in der Zeichenfolge und entfernt sie, da die zweite Hälfte des Arguments leer ist. Wenn wir etwas zwischen den Anführungszeichen hinzufügen würden:

sentence.gsub(/This/, "*") #returns "* is a sample sentence."

Dann werden alle Instanzen von „This“ gefunden und durch ein Sternchen (*) ersetzt. Es gibt auch eine Möglichkeit, diese Funktionalität umzukehren, indem ein Caret (^) am Anfang des regulären Ausdrucks das Gegenteil bewirkt:

sentence.gsub(//, "*") #returns "********a**a**************"

Alles (einschließlich der Räume!) in der Zeichenfolge, die KEIN a ist, wird durch Sternchen ersetzt. Beachten Sie, dass die eckigen Klammern () erforderlich sind, um diese Funktionalität anzuwenden.

Es ist möglich, Zahlen- oder Buchstabenbereiche in die Regex zu übergeben, um sich zu ersparen, jeden Buchstaben des Alphabets oder alle Zahlen von 0 bis 9 eingeben zu müssen.

sentence = "Th1s 1s a sampl3 s3nt3nc3."
sentence.gsub(//, "!") #these return the same thing
sentence.gsub(//, "!") # "Th!s !s a sampl! s!nt!nc!."

Und für Buchstabenbereiche:

sentence.gsub(//, "🔥") 
#returns "🔥🔥1🔥 1🔥 🔥 🔥🔥🔥🔥🔥3 🔥3🔥🔥3🔥🔥3."

A-Z enthält alle Großbuchstaben und a-z enthält alle Kleinbuchstaben. Dieser Gsub entfernt also alle Buchstaben und ersetzt sie durch das Feuer-Emoji.

Verknüpfungen

Es gibt viele nützliche Verknüpfungen, um die Übergabe an die Regex zu vereinfachen. Hier sind einige der nützlichsten, die ich bisher gefunden habe:

  • \ w für alle Buchstaben und Zahlen Targeting:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \ W, um das Gegenteil zu tun (im folgenden Beispiel werden die Leerzeichen und der Punkt am Ende durch „wow“ ersetzt“):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \ d für das Targeting aller Ganzzahlen:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \ D das Gegenteil zu tun
lorem.gsub(//, "-") #returns "-0-3--1-----"

Es gibt viele weitere Verknüpfungen und eine großartige Ressource dafür, die ich gefunden habe, ist Rubular, es hat eine Liste von ihnen und lässt Sie sie im Browser testen.

Blöcke

Blöcke können verwendet werden, um zu ändern, wie .gsub verhält. Hier ist ein Beispiel für die Großschreibung jedes Wortes in einer Zeichenfolge:

cool_phrase = "slow lorises are cool"
cool_phrase.gsub(/\w+/) {|word| word.capitalize}
#returns "Slow Lorises Are Cool"

Hinweis: Das „+“-Symbol nach dem \w markiert jedes Wort mit 1 oder mehr Zeichen. Ohne das „+“ wäre die gesamte Zeichenfolge in Großbuchstaben geschrieben.

Hier ist ein weiteres Beispiel, in dem die Zahl in einer Zeichenfolge inkrementiert wird:

year = "The year is 3100"
year.gsub(/\d+/) {|num| num.to_i + 1} #returns "The year is 3101"

Hinweis: Auch hier wählt das Symbol „+“ jede Nummer aus, die 1 oder mehr Nummern als Ganzes enthält. Ohne sie wäre die Rückkehr „Das Jahr ist 4211“, weil es jede Zahl einzeln erhöhen würde.

Anwendungsfälle

Reguläre Ausdrücke werden häufig verwendet, um Benutzereingaben zu validieren oder zu filtern. Stellen Sie sich vor, Ihre Website verfügt über ein Formular, das die Telefonnummer eines Benutzers enthält. Hier ist ein Beispiel für das Entfernen der Symbole, um die Zahl nur als Ganzzahl abzurufen:

phone_number = "(123)456-7890"
phone_number.gsub(/, ""/) #returns "1234567890"

Wenn Sie den Namen des Benutzers abrufen, ist es nützlich, nur eine Zeichenfolge abzurufen und alles zu entfernen, was sie eingeben, nämlich eine Zahl oder ein Symbol.

steve = "St97eve Brul()*)e "
steve.gsub(//, "").split(/(?=)/).join(" ")
#returns "Steve Brule"

Das obige Beispiel sieht ein wenig komplex aus, aber alles, was es tut, ist, alle Symbole und Zahlen zu entfernen, das Ergebnis in ein Array aufzuteilen, basierend darauf, wo Großbuchstaben sind, und sie zu einer Zeichenfolge zu verbinden.

Fazit und Ressourcen

Reguläre Ausdrücke und .gsub sind leistungsstarke Tools, die Ihr Programm verbessern können, aber das Lesen und der Versuch, sie herauszufinden, kann sich manchmal so anfühlen, als würden Sie Hieroglyphen lesen (siehe Bild unten). Ich empfehle Ihnen, sich Zeit zu nehmen, sie zu lernen und zu versuchen, sie einzeln herauszufinden. Tun Sie dies und bald werden Sie ein Regex-Meister sein!

Was!?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post Wie man Hagebutten erntet und benutzt
Next post Die physikalischen Eigenschaften von Titan