网址重写正则表达式 - 不匹配

时间:2013-02-13 22:33:08

标签: java regex url-rewriting tuckey-urlrewrite-filter

我有这个正则表达式用于重写网址:

<from>^/page/([0-9]+)/order/(.*)/by/(.*)/composition/(.*)/location/(.*)/price_min/(.*)/price_max/(.*)/industry/(.*)/type/(.*)$</from>
<to>/page=$1&order=$2&by=$3&composition=$4&location_id=$5&price_min=$6&price_max=$7&industry_id=$8&type_id=$9</to>

我想匹配下面的网址,但没有匹配。

  

/页/ 2 /顺序/ ID /由/降序/组合物/ 1 /位置/无/ PRICE_MIN / 2 / PRICE_MAX / 2 /工业/ 2 /类型/ 3

1 个答案:

答案 0 :(得分:1)

考虑使用以下方法:

^/page/([0-9]+)/order/(.+?)/by/(.+?)/composition/(.+?)/location/(.+?)/price_min/(.+?)/price_max/(.+?)/industry/(.+?)/type/(.+?)$

你的正则表达式有两件事:

  1. 您应该使用.+代替.*,因为//之间始终存在数据。
  2. 你应该添加?,这意味着它不会贪婪。它相当于写([^/]+),这意味着多次匹配除/以外的任何字符