/ / Wyrażenie regularne dla ciągu zawierającego jedną lub więcej liter gdzieś w nim - java, regex

Wyrażenie regularne dla łańcucha zawierającego jedną lub więcej liter gdzieś w nim - java, regex

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.