在复制文本块之前,正则表达式替换字符

时间:2015-12-16 01:03:34

标签: regex

鉴于以下正则表达式:

^([a-zA-Z0-9\/\-_]+)\[?]?(.+)?$

我需要添加一个字符,如果条件的第二个块为真('?'存在)。

示例:

myapp/test/urltofollow?name=john&age=36

结果:

1.  [0-22]  `myapp/test/urltofollow`
2.  [22-39] `?name=john&age=36`

我需要的是什么:

1.  [0-22]  `myapp/test/urltofollow`
2.  [22-39] `&name=john&age=36`

仅当存在时,才会被替换为& ,所以:

myapp/test/urltofollow

必须结果:

1.  [0-22]  `myapp/test/urltofollow`
2.  [22-39] `` (empty)

1 个答案:

答案 0 :(得分:1)

我对lighttpd不是很了解,但这可能有用:

url.rewrite-repeat = ( 
  "^([a-zA-Z0-9\/\-_]+)(\?(.+))?$" => "http://example.com?foo=bar&$3",
  "^(http://example.com?.*)&$" => "$1"
)

基本上,只需将&符号和参数添加到新URL(不带问号);如果新的URL最终以&符号结尾,请将其删除。