Symbol dowolnej liczby dowolnych znaków w wyrażeniu regularnym?

142

Zastanawiam się, czy istnieje symbol dla dowolnej liczby (w tym zera) dowolnych znaków

Skizit
źródło

Odpowiedzi:

33

Możesz użyć tego wyrażenia regularnego (dowolnego białego lub innego odstępu) tak wiele razy, jak to możliwe, aż do 0 włącznie.

[\s\S]*

To wyrażenie będzie pasowało do jak najmniejszej liczby, ale tak dużo, jak potrzeba do reszty wyrażenia.

[\s\S]*?

Na przykład w tym wyrażeniu regularnym [\s\S]*?Bbędzie pasować aBw aBaaaaB. Ale w tym regex [\s\S]*Bdopasuje aBaaaaBsię aBaaaaB.

agent-j
źródło
czy jest jakaś różnica między [\ s \ S] a.?
linqu
8
@linqu, .czasami nie pasuje \n(nowa linia), w zależności od opcji multilinii, ale [\s\S]dopasowuje dowolny znak.
agent-j,
19

Czy masz na myśli

.*

. każdy znak, z wyjątkiem znaku nowej linii, w trybie dotall zawiera również znaki nowej linii

* dowolna ilość poprzedniego wyrażenia, w tym 0 razy

stema
źródło
4

Użyłbym .*. .pasuje do dowolnego znaku, *oznacza 0 lub więcej wystąpień. Możesz potrzebować przełącznika DOTALL na wyrażenie regularne, aby przechwycić nowe wiersze za pomocą ..

Żal
źródło
-7

Tak, jest jeden, to gwiazdka: *

a* // looks for 0 or more instances of "a"

Powinno to zostać omówione w każdym samouczku dotyczącym wyrażeń regularnych Java lub w dokumentacji, którą przeglądasz.

Loduwijk
źródło