Символ для будь-якої кількості символів у регулярному виразі?


142

Мені цікаво, чи є символ для будь-якої кількості (включаючи нуль) будь-яких символів

Відповіді:


233
.*

.- це будь-який знак, *означає повторений нуль або більше разів.


2
Хороша відповідь, просто додамо дивіться тут: download.oracle.com/javase/1.4.2/docs/api/java/util/regex/…
Стів,

11
Підлий готча - це те, .*що не відповідає новому рядку ( '\n'). Дивіться це запитання для отримання додаткової інформації з цієї теми.
Капітан Людина

33

Ви можете використовувати цей регулярний вираз (будь-який пробіл або будь-який пробіл) якомога більше разів, аж до 0.

[\s\S]*

Цей вираз буде відповідати якомога менше, але стільки, скільки потрібно для решти виразу.

[\s\S]*?

Наприклад, у цьому регулярному виразі [\s\S]*?Bвідповідатиме aBв aBaaaaB. Але в цьому регулярному виразі [\s\S]*Bбуде відповідати aBaaaaBв aBaaaaB.


Чи є різниця між [\ s \ S] і.?
linqu

8
@linqu, .іноді не збігатиметься \n(новий рядок), залежно від варіанту багаторядкової лінії, але [\s\S]відповідатиме будь-якому символу.
агент-j

19

Ти маєш на увазі

.*

. будь-який символ, окрім символу нової лінії, в режимі dotall він включає також символи нового рядка

* будь-яка кількість попереднього виразу, включаючи 0 разів


4

Я б користувався .*. .відповідає будь-якому символу, *означає 0 або більше подій. Вам може знадобитися перемикач DOTALL на регулярний вираз, щоб захопити нові рядки ..


-7

Так, є одна, це зірочка: *

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

Це має бути висвітлено в будь-якому навчальному посібнику з Java-регексу або документації, яку ви шукаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.