Регулярные выражения

Как мне сделать выражение, чтобы соответствовать абсолютно всему (включая пробелы)?
Пример:

Regex: я купил _____ овец.

Спички: я купил овец. Я купил овцу. Я купил пять овец.

Я пытался использовать (.*), Но, похоже, это не работает.

Обновление: я заставил его работать, очевидно, проблема была не в регулярных выражениях, а в том, что экранировали символы (.).

Ответ 1

Обычно точка соответствует любому символу, кроме строк новой строки.

Итак, если .* не работает, установите опцию "dot matches newlines, too" (или используйте (?s).*).

Если вы используете JavaScript, который не имеет опции "dotall", попробуйте [\s\S]*. Это означает, что "соответствует любому количеству символов, которые являются либо пробельными, либо не-пробелами" - эффективно "соответствуют любой строке".

Другим вариантом, который работает только для JavaScript (и не признается каким-либо другим ароматом регулярного выражения), является [^]*, который также соответствует любой строке. Но [\s\S]* кажется более широко используемым, возможно потому, что он более портативен.

Ответ 2

(.*?) соответствует чему угодно - я использую это годами.

Ответ 3

Выбрать и запомнить 1 из следующих!!!:)

[\s\S]*
[\w\W]*
[\d\D]*

Объяснение:

\s: пробел \s: не пробелы

\w: слово \w: не слово

\d: digit \d: not digit

(Вы можете обменять * на +, если вы хотите 1 или БОЛЬШЕ символов [вместо 0 или более]).




ИЗОБРАЖЕНИЕ БОНУСА:

Если вы хотите совместить все в одной строке, вы можете использовать это:

[^\n]+

Объяснение:

^: not

\n: linebreak

+: для 1 символа или более

Ответ 4

Попробуйте следующее:

I bought (.* )?sheep

или даже

I bought .*sheep

Ответ 5

Используйте .*, И убедитесь, что вы используете эквивалент реализации одной строки в ваших реализациях, так что вы будете соответствовать в конце строки.

Здесь есть отличное объяснение → http://www.regular-expressions.info/dot.html

Ответ 6

(.*?) не работает для меня. Я пытаюсь совместить комментарии, окруженные /* */, которые могут содержать несколько строк.

Попробуйте следующее:

([a]|[^a])

Это регулярное выражение соответствует a или anything else expect a. Абсолютно, это означает соответствие всем.

Кстати, в моей ситуации /\*([a]|[^a])*/ соответствует комментариям стиля C.

Благодарим @mpen за более сжатый способ.

[\s\S]

Ответ 7

Для JavaScript лучшим и самым простым ответом будет /.*/.

Как подсказывают другие,/(.*?)/тоже подойдет, но/.*/проще. () Внутри шаблона не нужны, насколько я вижу, ни окончание? соответствовать абсолютно всему (включая пустые строки)

NON-РЕШЕНИЯ:

/[\ s\S]/НЕ соответствует пустым строкам, поэтому это не решение.

/[\ s\S] */Соответствует также пустым строкам. Но у него есть проблема: если вы используете его в своем коде, вы не можете закомментировать такой код, потому что '*/' интерпретируется как конец комментария.

/([\ s\S] *)/работает и не имеет проблемы с комментариями. Но это длиннее и сложнее для понимания, чем /.*/.

Ответ 8

Потому что . Найти один символ, кроме символа новой строки или окончания строки.

Таким образом, чтобы соответствовать чему-либо, вы можете использовать так: (.|\n)*?

Надеюсь, поможет!

Ответ 10

Я рекомендую использовать /(?=.*...)/g

пример

const text1 = 'I am using regex';
/(?=.*regex)/g.test(text1) // true

const text2 = 'regex is awesome';
/(?=.*regex)/g.test(text2) // true

const text3 = 'regex is util';
/(?=.*util)(?=.*regex)/g.test(text3) // true

const text4 = 'util is necessary';
/(?=.*util)(?=.*regex)/g.test(text4) // false because need regex in text

Используйте regex101 для тестирования

Ответ 11

Честно говоря, многие ответы устарели, поэтому я обнаружил, что если вы просто протестируете любую строку независимо от содержимого символов с помощью "/.*/i", то получите ВСЕ.