使用文字与转义字符的正则表达式

时间:2011-10-30 09:17:30

标签: ruby regex

使用转义字符的正则表达式与使用字面字符的正则表达式之间是否存在实际差异?即有什么情况与它们匹配会返回不同的结果吗?

Ruby中的示例:

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">

1 个答案:

答案 0 :(得分:1)

不,不是\t(或\n)。

但它在大多数其他情况下都不起作用(例如,在\s之类的字符串转义中没有1:1等价的转义序列,或者\b之类的含义不同的转义序列) ,所以使用转义版本(或者首先使用/.../构建正则表达式)通常是个好主意。