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

Odpowiedz Nowy wątek
2011-07-18 16:19
Newb
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: /+~$/

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-07-18 16:55
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ę...

edytowany 1x, ostatnio: Shalom, 2011-07-18 16:56

Pozostało 580 znaków

2011-07-18 17:53
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.

Pozostało 580 znaków

2011-07-18 18:36
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!");
        }

Pozostało 580 znaków

2011-07-19 19:23
0

Kurde, armata na muchę.

puts "Dopasowano" if $_[-1] == '~' while gets
edytowany 1x, ostatnio: hauleth, 2014-03-05 09:04

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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