Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定案例的正则表达式是什么?_Java_Regex - Fatal编程技术网

Java 给定案例的正则表达式是什么?

Java 给定案例的正则表达式是什么?,java,regex,Java,Regex,我正在使用正则表达式从URL字符串中获取特定的数字模式 要求:所需字符串应以-或/开头,后跟一系列数字,以/或零结尾 我试过:[-\/](\d+)(\/\$),但在www.abc.com/pages/Toms-1777/14623420046中,我想要/14623420046(即第二个出现的数字序列),但根据我的正则表达式,结果将是-1777/。我试着消极地回头看,但没有取得任何进展。我对这一切都不熟悉。请导游 测试用例:(具有匹配模式) www.abc.com/pages/Essen按摩治疗有

我正在使用正则表达式从URL字符串中获取特定的数字模式

要求:所需字符串应以
-
/
开头,后跟一系列数字,以
/
或零结尾

我试过:
[-\/](\d+)(\/\$)
,但在
www.abc.com/pages/Toms-1777/14623420046
中,我想要
/14623420046
(即第二个出现的数字序列),但根据我的正则表达式,结果将是
-1777/
。我试着消极地回头看,但没有取得任何进展。我对这一切都不熟悉。请导游

测试用例:(具有匹配模式)

www.abc.com/pages/Essen按摩治疗有限责任公司
/130561253629638

www.abc.com/biz/finn-mccools-santa-monica-2

www.abc.com/summerset.gardens.7

www.abc.com/pages/Toms-1777
/14623420046

www.abc.com/pages/The Clean Masters
/1403753595526512

www.abc.com/24hfsheepsheadbay

www.abc.com/sample2NVCoolSpace

www.abc.com/pages/Jet-Set-3920
/542495615847409

www.abc.com/temp.buildings.77

www.abc.com/2423453534temp
/2312


www.abc.com/Ptemp Gtemp Dtemp
-189398324428792/
temp

无论哪种情况,你都想要那美元。与其说是“斜杠或结束”,不如说是“可选斜杠,然后是非常不可选的结束”。所以<代码>/?$。通常不需要转义斜杠,尤其是在java正则表达式中:

Pattern.compile("[-/](\\d+)/?$")
这是这样写的:从减号或斜杠开始,一组数字,然后是0或1斜杠,最后是结尾。注意,使用
find()
和not
matches()
-matches仅在整个字符串匹配时才起作用,而当-或/出现在中间时,它不会起作用


编辑:java字符串中缺少一个反斜杠。

如果您想要最后一个匹配,请使用
*[-/](\d+)(/|$)
在java中,您可以从模式对象中获取所有匹配项并选择最后一个。@WiktorStribiżew您的正则表达式包含3个组,它也匹配第一个组,但我只需要其他2个组。谢谢。不知道你在说谁的正则表达式。我的只有两组。谢谢@rzwitserroot