podstawowe wyrażenia regularne w Rubim z gsub

wyrażenia regularne (skrócone do regex)są używane do operowania na wzorcach znalezionych w łańcuchach. Mogą znaleźć, zastąpić lub usunąć określone części ciągów, w zależności od tego, co im każesz zrobić. W Rubim są one zawsze zawarte w dwóch ukośnikach do przodu.

na przykład za pomocąmetoda gsub dla ciągów:

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

The .metoda gsub znajduje wszystkie a w łańcuchu i usuwa je, ponieważ druga połowa argumentu jest pusta. Gdybyśmy dodali coś między cudzysłowami:

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

następnie Znajduje i zastępuje wszystkie instancje „This” gwiazdką (*). Istnieje również sposób na odwrócenie tej funkcjonalności, dodanie karetki ( ^ ) z przodu wyrażenia regularnego zrobi coś przeciwnego:

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

wszystko (łącznie ze spacjami!) w ciągu, który nie jest a jest zastępowany gwiazdkami. Zauważ, że aby zastosować tę funkcjonalność, konieczne są nawiasy kwadratowe (), bez nich gsub nic nie zrobi.

można przekazać zakresy liczb lub liter do wyrażenia regularnego, aby uniknąć konieczności wpisywania każdej litery w alfabecie lub wszystkich liczb od 0 do 9.

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

i dla zakresów liter:

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

A-Z zawiera wszystkie duże litery, A-z zawiera wszystkie małe litery. Więc ten gsub usuwa wszystkie litery i zastępuje je Emoji ognia.

skróty

istnieje wiele przydatnych skrótów dostępnych w celu uproszczenia tego, co jest przekazywane do wyrażenia regularnego. Oto niektóre z najbardziej przydatnych, jakie do tej pory znalazłem:

  • \w dla kierowania wszystkimi literami i cyframi:
lorem = "Lorem ipsum."
lorem.gsub(//, "wow") #returns "wowwowwowwowwow wowwowwowwowwow."

• \W aby zrobić odwrotnie (w poniższym przykładzie jest zastąpienie spacji i kropki na końcu „wow”):

lorem.gsub(//, "wow") #returns "Loremwowipsumwow"
  • \d dla kierowania wszystkich liczb całkowitych:
lorem = "L0r3m 1psum"
lorem.gsub(//, "-") #returns "L-r-m -psum."
  • \D zrobić odwrotnie
lorem.gsub(//, "-") #returns "-0-3--1-----"

istnieje wiele innych skrótów, a świetnym źródłem do tego, co znalazłem, jest Rubular, ma ich listę i pozwala je przetestować w przeglądarce.

bloki

bloki mogą być używane do zmiany sposobu .gsub zachowuje się. Oto przykład na pisanie wielkich liter każdego słowa w łańcuchu:

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

Uwaga: symbol ” + ” PO \ w wybiera każde słowo, które ma 1 lub więcej znaków. Bez ” + ” cały łańcuch byłby pisany wielkimi literami.

oto kolejny przykład, w którym liczba w łańcuchu jest zwiększana:

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

Uwaga: ponownie, symbol ” + ” wybiera każdą liczbę, która ma 1 lub więcej liczb jako całość. Bez niego, zwrot byłby „rok jest 4211”, ponieważ byłoby zwiększenie każdego numeru indywidualnie.

przypadki użycia

wyrażenia regularne są często używane do sprawdzania poprawności lub filtrowania danych wejściowych użytkownika. Wyobraź sobie, że Twoja strona ma formularz, który przyjmuje numer telefonu użytkownika. Oto przykład usunięcia symboli, aby uzyskać liczbę tylko jako liczbę całkowitą:

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

przy pobieraniu nazwy użytkownika przydatne jest pobranie tylko ciągu liter i usunięcie wszystkiego, co wprowadzi, czyli liczby lub symbolu.

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

powyższy przykład wygląda na trochę złożony, jednak wszystko, co robi, to usuwanie wszystkich symboli i liczb, dzielenie wyniku na tablicę w oparciu o duże litery i łączenie ich w ciąg znaków.

wnioski i zasoby

wyrażenia regularne i .gsub to potężne narzędzia, które mogą ulepszyć Twój program, ale czytanie i próba ich rozgryzienia może czasami wydawać się czytaniem hieroglifów (patrz obrazek poniżej). Polecam poświęcenie czasu na ich naukę i spróbowanie ich rozgryźć pojedynczo. Zrób to, a wkrótce będziesz mistrzem regex!

co!?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post jak zbierać i używać dzikiej róży
Next post Właściwości fizyczne tytanu