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

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.


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


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ą ..


-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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.