正则表达式 - 选择查询字符串值的值并在第一个&符号处停止

时间:2014-03-27 21:38:34

标签: regex tomcat web

我正在尝试使用正则表达式来匹配查询字符串模式,并且遇到了一些问题。该网址为" http:www.domain.com/dir/page.aspx"。此页面可以以非特定顺序附加各种查询字符串变量和值。我想要做的是获取其中一个变量的值并使用它。因此,对于所有这些例子:

http:\\www.domain.com/dir/page.aspx?city=name
http:\\www.domain.com/dir/page.aspx?area=codes&city=name
http:\\www.domain.com/dir/page.aspx?area=codes&city=name&state=ofmind
http:\\www.domain.com/dir/page.aspx?city=name&state=ofmind
http:\\www.domain.com/dir/page.aspx?area=codes&state=ofmind&city=name
http:\\www.domain.com/dir/page.aspx?area=codes&city=name&state=ofmind&dat=dis&foo=bar

我想提取价值" name"从城市变量并使用它。到目前为止,我提出的是:

/dir\/page.aspx\?(.*&)?city=(.*)(?=&.*)/

并使用$ 2表示该值。

这适用于某些情况,但似乎并没有抓住它们。我相信我的问题在这里:

city=(.*)

并且我需要在第一次出现&符时停止捕获,但我的随机复制和粘贴工作都没有成功。任何人都可以解释如何在特定的角色出现之前捕获任何和所有角色吗?

1 个答案:

答案 0 :(得分:2)

这将是捕获$2

/dir\/page.aspx\?(.*&)?city=([^&]*)/

这将是捕获$1

/dir\/page.aspx\?(?:.*&)?city=([^&]*)/