我有一组用于 Elasticsearch 的特殊字符,我需要使用 Ruby 对其进行转义。
它们是:+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
我怎样才能得到任何字符串来转义这些字符中的任何一个?
谢谢
最佳答案
所陈述的问题没有解决方案,因为“转义两个后续字符”没有意义。您希望收到什么结果“转义”,比如 &&
?
我相信,您想转义所有单个字符,以便 &&
变成 \&\&
和 ||
— \|\|
。这很容易。
to_escape = %w_+ - = & | > < ! ( ) { } [ ] ^ " ~ * ? : \ /_ # C"mon, SO parser
re = Regexp.union(to_escape)
print 'str (f) | a || b'.gsub(re) { |m| "\\#{m}" }
#⇒ str \(f\) \| a \|\| b
另一种可能性是使用 Regexp#escape
,但它会逃脱更多,比你可能需要的更多(例如空格。)
关于Ruby 转义字符串中的一组特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429290/