为什么这个正则表达式不起作用?

时间:2012-08-09 14:30:01

标签: java regex

我正在尝试将字符串与java正则表达式匹配,但我无法成功。我是java的新手,我的大部分经验都是基于linux的正则表达式,但我没有成功。有人能帮助我吗?

以下是我使用的代码。

正则表达式是 -

//vod//final\_\d{0,99}.\d{0,99}\\-Frag\d{0,99}

我想要匹配的行是

/vod/final_1.3Seg1-Frag1

我希望1.3,1和1是通配符。

有人请帮助我...... :(

4 个答案:

答案 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。