我正在尝试将字符串与java正则表达式匹配,但我无法成功。我是java的新手,我的大部分经验都是基于linux的正则表达式,但我没有成功。有人能帮助我吗?
以下是我使用的代码。
正则表达式是 -
//vod//final\_\d{0,99}.\d{0,99}\\-Frag\d{0,99}
我想要匹配的行是
/vod/final_1.3Seg1-Frag1
我希望1.3,1和1是通配符。
有人请帮助我...... :(
答案 0 :(得分:2)
这应该有效:
Pattern p = Pattern.compile( "/vod/final_\\d+\\.\\d+Seg\\d+-Frag\\d+" );
注意:要保护特殊字符,您可以使用Pattern.quote()
当遇到这样的问题时,从简单的文本和模式开始,然后从那里构建。即首先尝试匹配/
,然后/vod/
,然后/vod/final_1
等。
答案 1 :(得分:2)
您错过了Seg1
部分。此外,您正在转义不需要转义的字符。试试这个正则表达式:/vod/final_\\d+\\.\\d+Seg1-Frag\\d+
答案 2 :(得分:0)
你逃避太多了。不要逃避/,_, - 。
类似的东西:
/vod/final_\d{0,99}.\d{0,99}-Frag\d{0,99}
答案 3 :(得分:0)
这有用吗?
/\/vod\/final\_\d{0,99}.\d{0,99}Seg\d-Frag\d{0,99}
此外,以下是我用于编辑您在上面提供的正则表达式的内容:http://rubular.com/
它说这是红宝石,但它也提到它也适用于java。