匹配整个字符串的正则表达式是什么,除非字符串是“/”?
用例:这是一个重写规则。使用rack-rewrite,它附加一个尾随/.
我需要:
/foo -> /newpath/foo
/ -> newpath
第二个示例没有尾部斜杠。
看看Regex - Match Entire String Unless,但不知道除了“/".
之外如何使其适用于所有人使用Ruby。
答案 0 :(得分:2)
为此目的使用正则表达式是完全错误的,但根据您的要求:
re = %r{(?!\A/\z)(\A.*\z)}
"foo"[re] #=> "foo"
" /"[re] #=> " /"
"/ "[re] #=> "/ "
"/"[re] #=> nil
如果你想获取字符串,除非字符串是"/"
,那么这样做的方法是:
string unless string == "/"
答案 1 :(得分:1)
rewrite %r{.*}, lambda { |match, rack_env|
url = match[0]
url == "/" ? "newpath" : "/newpath#{url}"
}