Ruby - czy na koncu Stringa znajduje sie tylda? wyrazenie regularne

Ruby - czy na koncu Stringa znajduje sie tylda? wyrazenie regularne
  • Rejestracja: dni
  • Ostatnio: dni
0

Potrzebuje wyrazenia regularnego, ktore dopasuje mi nastepujacy wzorzec:
jezeli String jest zakoczony co najmniej 1 znakiem ~ to ma wykonac instrukcje warunkowa.

puts "Dopasowano!" if str =~ /+~$/

Wyrazenie powoduje nastepujacy blad: invalid regular expression; there's no previous pattern, to which '+' would define cardinality at 1: /+~$/

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No i czego nie rozumiesz? + oznacza "powtórz ostatni znak 1 lub więcej razy" a poprzedniego znaku u ciebie nie ma. Daj tam na przykład kropkę, ale ja bym użył * zamiast + bo przecież możesz mieć linijkę która ma tylko tyldę...

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

ja nie znam Rubiego, ale do sprawdzania czy string się kończy danym znakiem są zapewne prostsze funkcje, niż od razu wyrażenia regularne.

MR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 65
0

Nie znam Ruby, ale w Javie też są wyrażenia regularne. Spróbuj takiego wyrażenia: ".*~"
Oznacza ono mniej więcej "dowolny znak występujący wiele razy, lub w ogóle (.*) a po nim tylda (~)". Jak poskładasz to wychodzi co trzeba.

Testowałem w Javie i działa, kod poglądowy:

Kopiuj
 
public static void main(String[] args) {
        String str = "String zakończony tyldą~";
        if(str.matches(".*~")) {
            System.out.println("Dopasowanie!");
        }
hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Kurde, armata na muchę.

Kopiuj
puts "Dopasowano" if $_[-1] == '~' while gets

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.