Как мне сделать выражение, чтобы соответствовать абсолютно всему (включая пробелы)?
Пример:
Regex: я купил _____ овец.
Спички: я купил овец. Я купил овцу. Я купил пять овец.
Я пытался использовать (.*)
, но это не похоже на работу.
Обновление: я заставил его работать, очевидно, проблема не в регулярных выражениях, просто в том, что символы (.) Экранировались.
.*
должно сработать. Можете ли вы вставить свой фактический код?Ответы:
Обычно точка соответствует любому символу, кроме символов новой строки .
Так что, если
.*
не работает, установите опцию «точка соответствует символу новой строки тоже» (или используйте(?s).*
).Если вы используете JavaScript, у которого нет опции "dotall", попробуйте
[\s\S]*
. Это означает «соответствовать любому количеству символов, которые являются пробельными или непробельными символами» - фактически «соответствовать любой строке».Другой вариант, который работает только для JavaScript (и не распознается любым другим видом регулярного выражения), -
[^]*
это также соответствие любой строке. Но,[\s\S]*
кажется, более широко используется, возможно, потому что это более портативно.источник
.*
не соответствует,\n
но соответствует строке, которая содержит только\n
потому, что соответствует 0 символов.(?s).*
работы для меня все , включая соответствие новой линии*
(как в/.*(?:)/
) или используя конструктор regex (var foo = new RegExp(".*")
).(.*?)
соответствует чему угодно - я использую это в течение многих лет.источник
("title":".*?")
[\s\S]*
или[^]*
.w+
не достаточно, я в конечном итоге использовать.+
. К счастью, еще не вернулся, чтобы укусить меня.Выберите и запомните 1 из следующих! :)
Объяснение:
\s
: пробел\S
: не пробел\w
: слово\W
: не слово\d
: цифра\D
: не цифра(Вы можете обменять
*
на,+
если вы хотите 1 или более символов [вместо 0 или более]).БОНУС РЕДАКТИРОВАТЬ:
Если вы хотите сопоставить все в одной строке, вы можете использовать это:
Объяснение:
^
: не\n
: Разрыв строки+
: для 1 символа или болееисточник
Попробуй это:
или даже
источник
Используйте
.*
и убедитесь, что вы используете в своих реализациях эквивалент одной строки, чтобы совпадать с окончаниями строки .Здесь есть отличное объяснение -> http://www.regular-expressions.info/dot.html
источник
Потому что
.
найти один символ, кроме новой строки или конца строки.Итак, чтобы соответствовать чему-либо, вы можете использовать так:
(.|\n)*?
Надеюсь, поможет!
источник
(.*?)
не работает для меня. Я пытаюсь сопоставить комментарии в окружении/* */
, которые могут содержать несколько строк.Попробуй это:
Это регулярное выражение соответствует
a
илиanything else expect a
. Абсолютно, это означает соответствие всему.Кстати, в моей ситуации,
/\*([a]|[^a])*/
соответствует комментариям в стиле C.Спасибо @mpen за более сжатый способ.
источник
[\s\S]
- это сопоставление пробелов и непространств.Для JavaScript лучшим и простым ответом будет /.*/.
Как подсказывают другие, /(.*?)/ тоже подойдет, но /.*/ проще. () Внутри шаблона не нужны, насколько я вижу, ни окончание? соответствовать абсолютно всему (включая пустые строки)
NON-РЕШЕНИЯ:
/ [\ s \ S] / НЕ соответствует пустым строкам, поэтому это не решение.
/ [\ s \ S] * / Соответствует также пустым строкам. Но у него есть проблема: если вы используете его в своем коде, вы не можете закомментировать такой код, потому что '* /' интерпретируется как конец комментария.
/ ([\ s \ S] *) / работает и не имеет проблемы с комментариями. Но это длиннее и сложнее для понимания, чем /.*/.
источник
Если вы используете JavaScript, ES2018 добавил флаг s (dotAll). С
s
флагом точка.
будет соответствовать любым символам, включая переводы строки.Примечание : пока не поддерживается некоторыми браузерами.
источник
В спецификации 2018 предусмотрен флаг s (псевдоним: dotAll), который
.
будет соответствовать любому символу, включая разрывы строк :Код выше работает в Chrome, но
s
флаг еще не реализован в Firefox, но это будет в ближайшее время .источник
http://sandbox.phpcode.eu/g/b2243.php
источник
Я рекомендую использовать
/(?=.*...)/g
пример
Используйте regex101 для тестирования
источник
Честно говоря, многие ответы устарели, поэтому я обнаружил, что если вы просто протестируете любую строку независимо от содержимого символа с помощью «/.*/i», то получите ВСЕ.
источник