Co byłoby wyrażeniem regularnym, którego wynikiem byłaby prawda, gdyby ciąg zawierał jedną lub więcej liter w dowolnym miejscu.
Na przykład:
1222a3999
byłoby prawdą
a222aZaa
byłoby prawdą
aaaAaaaa
byłoby prawdą
ale:
1111112())--
byłoby fałszywe
Próbowałem: ^[a-zA-Z]+$
i [a-zA-Z]+
ale żadna nie działa, gdy w ciągu są jakieś cyfry i inne znaki.
Odpowiedzi:
2 dla odpowiedzi № 1.*[a-zA-Z].*
Powyższe oznacza jedną literę, a przed / po niej - wszystko jest w porządku.
W java:
String regex = ".*[a-zA-Z].*";
System.out.println("1222a3999".matches(regex));
System.out.println("a222aZaa ".matches(regex));
System.out.println("aaaAaaaa ".matches(regex));
System.out.println("1111112())-- ".matches(regex));
Zapewni:
true
true
true
false
zgodnie z oczekiwaniami
2 dla odpowiedzi nr 2
To wyrażenie regularne powinno to zrobić:
[a-zA-Z]
Pasuje tak długo, jak długo jest jedna litera w dowolnym miejscu ciągu, nie przejmuje się żadnymi innymi znakami.
[a-zA-Z]+
powinienem również zadziałać, nie wiem, dlaczego to dla ciebie nie zadziałało.
0 dla odpowiedzi № 3
^.*[a-zA-Z].*$
W zależności od wdrożenia match()
funkcje sprawdzają, czy Cały pasuje do ciągu znaków (prawdopodobnie dlatego [a-zA-Z]
lub [a-zA-Z]+
wzory nie działały).
Albo użyj match()
z powyższym wzorem lub użyj jakiegoś rodzaju search()
zamiast tego metoda.
0 dla odpowiedzi nr 4
.*[a-zA-Z]?.*
Powinien dać ci pożądany wynik.
Kropka pasuje do dowolnego znaku oprócz nowej linii,gwiazdka mówi, że powinno to istnieć zero lub więcej razy. Więc wzór [a-zA-Z]? mówi podaj mi co najmniej jeden znak w nawiasie kwadratowym ze względu na użycie znaku zapytania. Wreszcie zakończenie. * Mówi, że po znakach alfabetu może następować zero lub więcej znaków dowolnego typu.