正则表达式匹配整个字符串,除非字符串是/

时间:2013-07-20 03:34:33

标签: ruby regex

匹配整个字符串的正则表达式是什么,除非字符串是“/”?

用例:这是一个重写规则。使用rack-rewrite,它附加一个尾随/.

我需要:

/foo -> /newpath/foo
/ -> newpath

第二个示例没有尾部斜杠。

看看Regex - Match Entire String Unless,但不知道除了“/".

之外如何使其适用于所有人

使用Ruby。

2 个答案:

答案 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}"
  }