0

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

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

我需要:

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

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

查看了Regex - Match Entire String unless但不知道如何使其适用于除“/”之外的所有字符串。

在 Ruby 中工作。

4

2 回答 2

2

为此目的使用正则表达式是完全错误的,但根据您的要求:

re = %r{(?!\A/\z)(\A.*\z)}

"foo"[re] #=> "foo"
" /"[re]  #=> " /"
"/ "[re]  #=> "/ "
"/"[re]   #=> nil

如果要获取字符串,除非字符串是"/",那么方法是:

string unless string == "/"
于 2013-07-20T03:43:37.177 回答
1
rewrite %r{.*}, lambda { |match, rack_env|
    url = match[0]
    url == "/" ? "newpath" : "/newpath#{url}"
  }
于 2013-07-20T04:32:22.477 回答