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

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: /+~$/

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ę...

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.

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:

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

Kurde, armata na muchę.

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1