Я обнаружил в регулярном выражении следующий токен: [\ s \ S] *?
Если я правильно понимаю, класс символов означает «соответствие пробельному символу или не -пробельный символ ". Следовательно, не будет ли это делать то же самое, что и . *?
Одно из возможных отличий заключается в том, что обычно .
не соответствует символам новой строки. Однако это регулярное выражение было написано на Ruby, и ему был передан модификатор m
, означающий, что .
действительно соответствует символам новой строки.
Есть ли какие-то другие причины использовать [\ s \ S] *?
вместо . *?
В случае, если это помогает, обычный Выражение, на которое я смотрю, появляется внутри библиотеки звездочек в константе HEADER_PATTERN в строке 97. Полное выражение:
/
\A \s* (
(\/\* ([\s\S]*?) \*\/) |
(\#\#\# ([\s\S]*?) \#\#\#) |
(\/\/ ([^\n]*) \n?)+ |
(\# ([^\n]*) \n?)+
)
/mx