В чем разница между [\ s \ S] *? и. *?

Я обнаружил в регулярном выражении следующий токен: [\ s \ S] *?

Если я правильно понимаю, класс символов означает «соответствие пробельному символу или не -пробельный символ ". Следовательно, не будет ли это делать то же самое, что и . *?

Одно из возможных отличий заключается в том, что обычно . не соответствует символам новой строки. Однако это регулярное выражение было написано на Ruby, и ему был передан модификатор m , означающий, что . действительно соответствует символам новой строки.

Есть ли какие-то другие причины использовать [\ s \ S] *? вместо . *?

В случае, если это помогает, обычный Выражение, на которое я смотрю, появляется внутри библиотеки звездочек в константе HEADER_PATTERN в строке 97. Полное выражение:

/
  \A \s* (
    (\/\* ([\s\S]*?) \*\/) |
    (\#\#\# ([\s\S]*?) \#\#\#) |
    (\/\/ ([^\n]*) \n?)+ |
    (\# ([^\n]*) \n?)+
  )
/mx

8
задан Rupert Madden-Abbott 29 May 2011 в 19:01
поделиться