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