需要正则表达式的URL中的模式

时间:2013-12-01 12:25:19

标签: java regex

我正在为某些特定需求编写一个Web爬虫,并且需要判断字符串中是否存在特定模式。

String格式的网址设置如下:

/life-is-what-you-make-it/dask23442knk24?pid=9788129124913&ref=9090912adqeqeqeqeq

如果pid包含only digits(这里你可以看到pid=9788129124913所以它应该返回true)而不是做某事。有人可以帮助我获得正则表达式。感谢。

修改

我一直在substring()这样做,但是它太繁琐了,所以我想到了regex但却无法理解它自己写的。很快我就会在这个漫长的待完成的东西结束后研究正则表达式的东西。谢谢你的支持。

3 个答案:

答案 0 :(得分:1)

这是一个正则表达式:

\bpid=\d+(&|$)

拼写:在单词边界之后,“pid =”后跟一些数字,然后是&符号或字符串的结尾。

(一定要使用Matcher.find,而不是Matcher.matches)

答案 1 :(得分:1)

要获取 pid 参数的数值,请使用正则表达式(?<=\bpid=)\d+(?=&|$)

Regular expression visualization

但是在Java中,您必须将每个转义字符\加倍,因此模式为

(?<=\\bpid=)\\d+(?=&|$)

Pattern p = Pattern.compile("(?<=\\bpid=)\\d+(?=&|$)");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(0));
}

测试此演示代码 here

答案 2 :(得分:0)

如果您不关心验证网址的其余部分,并且只想匹配/获取pid值,则可以使用:

\?pid=(\d+)

这也会返回第一组中的pid值。