0

文字列をJava正規表現と一致させようとしていますが、成功しません。私はJavaにかなり慣れていません。私の経験のほとんどは、Linuxベースの正規表現であり、成功していません。誰かが私を助けることができますか?

以下はImが使用しているコードです。

正規表現は-

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

私が一致させようとしている線は

/vod/final_1.3Seg1-Frag1

1.3、1、1をワイルドカードにしたいところ。

誰かが私を助けてください...:(

4

4 に答える 4

2

これは機能するはずです:

Pattern p = Pattern.compile( "/vod/final_\\d+\\.\\d+Seg\\d+-Frag\\d+" );

注:特殊な文字を保護するために、次を使用できますPattern.quote()

このような問題が発生した場合は、単純なテキストとパターンから始めて、そこから構築してください。つまり、最初に一致を試み/、次に/vod/、次に/vod/final_1、など。

于 2012-08-09T14:35:46.907 に答える
2

あなたはその部分を失っていSeg1ます。また、エスケープする必要のない文字をエスケープしています。この正規表現を試してみてください:/vod/final_\\d+\\.\\d+Seg1-Frag\\d+

于 2012-08-09T14:37:56.570 に答える
0

あなたは逃げすぎています。/、_、-をエスケープしないでください。

何かのようなもの:

/vod/final_\d{0,99}.\d{0,99}-Frag\d{0,99}
于 2012-08-09T14:33:28.300 に答える
0

これは機能しますか?

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

また、上記で提供した正規表現を編集するために使用したものは次のとおりです:http: //rubular.com/

それはルビー用だと言っていますが、Javaでも機能するとも述べています。

于 2012-08-09T14:39:21.023 に答える