Stworzenie i porównanie RegExp-a w jednej instrukcji

0

Witam

Chciałbym stworzyć jak najkrótszą instrukcję która skompiluje, porówna a następnie sprawdzi zgodność wyrazenia regularnego.

W tutorialach w Internecie coś takiego zajmuje min. kilka linii - tworzone są zmienne itd. Ja natomiast muszę to zmieścić w warunku do if-a.

Próbowałem:

if(Pattern.compile("/(.*)/").matcher("dddd").matches()) {
            ...
        }

Nie działa

if(((Pattern.compile("/(.*)/")).matcher("sss")).matches()) {
            System.out.println("Matches");
        }

Ten również.
Czy mógłbym prosić o jakąś wskazówkę?

0

"dddd" ma pasować do tego regexpa?
Napisz co chcesz osiągnąć albo jak to osiągnołeś w kilku liniach?
PS. Tak z ciekawości dlaczego musi być w jednej lini?

0

Mam string który może pasować do kilkudziesięciu wzorów - kategorii. Dla każdej kategorii program ma zachować się inaczej. Dlatego nie widzi mi sie tworzenie po kilka linii kodu dla każdego przypadku. Chciałbym to zrobić w if, else if.

Co do wyrażenia - jest ono przykładowe. BTW do wzorca /(.*)/ pasuje wszystko.

0

Jak osiągnac to w kilku liniach?

Chociazby tak:

Pattern pattern = Pattern.compile("..."));
Matcher matcher = pattern.matcher("...");
wynik = matcher.matches()

0

if (Pattern.matches(regex, text))

Jednak nie jest do dobre rozwiazanie jesli ten if jest wolany wielokrotnie. Powinienes zrobic zmienna klasy ktora ma prekompilowany Pattern, i pozniej tylko wywolywac

if (pattern.matcher().matches("")

If będzie wykonany tylko raz, poza tym każde else if zawiera inny pattern zatem nie opłaca sie robić nic wiecej ponadto co napisałem.

0

Podane przez Ciebie rozwiązanie nie działa, albo tekst "aaa" nie pasuje do wzorca /(.*)/

0

Jeszcze krócej:

"aaa".matches("/(.*)/");

aaa nie pasuje do wzorca /(.*)/

0
Anonim napisał(a)

Podane przez Ciebie rozwiązanie nie działa, albo tekst "aaa" nie pasuje do wzorca /(.*)/

Oczywiscie ze nia pasuje. A masz w "aaa" nawiasy? To nie perl.

@iooi: prawda, najktorszy kod. Przy czym ma wszystkie wady ktore wspomnialem wczesniej - jest nieoptymalny. Ale kto by sie tym przejmowal ;d

0

Prawde mowisz ;d czyli to jest po prostu perl.

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