我需要从网址中提取最后一个数字,后跟短划线。
示例:
http://www.example.com/p-test-test1-a-12345.html
我需要使用正则表达式提取12345。
我试过这个-\d(.*?).html
,这让我2345
不知道为什么它会删除1个想法?
答案 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"));