从URL regex java中提取数字

时间:2013-12-04 08:55:42

标签: java regex

我需要从网址中提取最后一个数字,后跟短划线。

示例:

http://www.example.com/p-test-test1-a-12345.html

我需要使用正则表达式提取12345。

我试过这个-\d(.*?).html,这让我2345不知道为什么它会删除1个想法?

4 个答案:

答案 0 :(得分:4)

它删除了第一个数字,因为你有无效模式,它会捕获-digit

之后的所有内容

-\d(.*?).html

-\d - 匹配短划线后跟数字

(.*?) - 捕获任何字符(新行除外)0次或更多次,直到下一个令牌满意为止

. - 匹配任何字符(新行除外)

html - 匹配 html


尝试这种模式:

<强>模式

(?<=-)\d+(?=\.html)

答案 1 :(得分:2)

您必须将\d添加到群组:-(\d.*?).html

如果必须只有数字,则-(\d+)\.html更好。

答案 2 :(得分:1)

你正在寻找一个破折号,然后是一个数字,然后在“.html”之前捕获所有字符,这就是为什么没有捕获1。

请改为尝试:

-(\d+)\.html

答案 3 :(得分:1)

试试这个:

String pattern2 = ".*?(\\d+)\\.html";
System.out.println(s.replaceAll(pattern2, "$1"));