我正在为某些特定需求编写一个Web爬虫,并且需要判断字符串中是否存在特定模式。
将String
格式的网址设置如下:
/life-is-what-you-make-it/dask23442knk24?pid=9788129124913&ref=9090912adqeqeqeqeq
如果pid
包含only digits
(这里你可以看到pid=9788129124913
所以它应该返回true)而不是做某事。有人可以帮助我获得正则表达式。感谢。
修改
我一直在substring()
这样做,但是它太繁琐了,所以我想到了regex
但却无法理解它自己写的。很快我就会在这个漫长的待完成的东西结束后研究正则表达式的东西。谢谢你的支持。
答案 0 :(得分:1)
这是一个正则表达式:
\bpid=\d+(&|$)
拼写:在单词边界之后,“pid =”后跟一些数字,然后是&符号或字符串的结尾。
(一定要使用Matcher.find,而不是Matcher.matches)
答案 1 :(得分:1)
要获取 pid 参数的数值,请使用正则表达式(?<=\bpid=)\d+(?=&|$)
但是在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
值。