在爲修身的解析器的代碼中,有以下的正則表達式語句:Ruby Regex語句中的 S和[^ s]是否有區別?
/\A(?:#{keys}|\*(?=[^\s]+)|(#{WORD_RE}(?:#{WORD_RE}|:|-)*#{WORD_RE}|#{WORD_RE}+))/
能\S
被替換爲[^\s]
?
該聲明的行爲是否有任何不同?
在爲修身的解析器的代碼中,有以下的正則表達式語句:Ruby Regex語句中的 S和[^ s]是否有區別?
/\A(?:#{keys}|\*(?=[^\s]+)|(#{WORD_RE}(?:#{WORD_RE}|:|-)*#{WORD_RE}|#{WORD_RE}+))/
能\S
被替換爲[^\s]
?
該聲明的行爲是否有任何不同?
正如一個稍長的解釋:\S
是這被解釋爲/[^ \t\r\n\f]/
元字符,而\s
是這被解釋爲/[ \t\r\n\f]/
元字符 - >Documentation
所以字符的解釋是完全相反的,這意味着如果你反轉其中的一個,你會得到完全相同的匹配行爲。
這意味着是的,你可以在\S
的正則表達式中用[^\s]
來代替[^\s]
。
\S
只是與\s
否定,所以它與[^\s]
相同,沒有什麼區別。