2011-10-30 55 views
1

使用轉義字符的正則表達式與使用文字字符的正則表達式之間是否存在實際區別?即有沒有與他們匹配的情況下會返回不同的結果?使用文字與轉義字符的正則表達式

實施例紅寶石:

literal = Regexp.new("\t") 
=>//
escaped = Regexp.new("\\t") 
=> /\t/ 

# They're different... 
literal == escaped 
=> false 

# ...but they seem to match the same: 
"Hello\tWorld".match(literal) 
=> #<MatchData "\t"> 
"Hello\tWorld".match(escaped) 
=> #<MatchData "\t"> 
+0

@Tim Pietzcker - 感謝您澄清此問題應該只適用於像\ t或\ n這樣的轉義字符,而不是像\ b或\ s那樣轉義SEQUENCES。將編輯以使其更清晰。 – belteshazzar293

回答

1

,不是在\t(或\n)的情況。

但在大多數其他情況下(例如,在字符串轉義中沒有1:1等效的轉義序列,如\s或含義與\b不同),所以它通常是一個好主意使用轉義版本(或者首先使用/.../構建正則表達式)。