2

java で次の文字列に一致する正しい正規表現は何ですか?

update_1_0_3_to_1_0_4

私は試した

boolean t1= files.matches("^update_\\d_\\d_\\d{1,2}$\\_to_\\d_\\d_\\d{1,2}$");
System.out.println("The strings match " + t1);

ただし、機能しないため、false を返します。

4

3 に答える 3

3

"^update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,2}$"

私がした$\\のは真ん中から取り除くことだけでした。$は文字列の終わりを意味し (もちろん、最後にのみある必要があります)、_エスケープする必要がないため、\\以前は不要でした。

于 2013-05-29T23:37:11.563 に答える
2

$「文字列の終わり」を意味するので...$\\_...、あなたが望むものになることは決してありません(「文字列の終わり、その後にアンダースコアが続く」ことを意味します)。

実際、String.matchesすでに文字列全体に一致しているため^、 と$はほとんど冗長です。また、エスケープする必要はありません_。それを一緒に入れて:

boolean t1= files.matches("update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,2}");
System.out.println("The strings match " + t1);
于 2013-05-29T23:37:44.570 に答える
1

より短い正規表現:^update(_\\d){2}_\\d{1,2}_to(_\\d){2}_\\d{1,2}$

またはこれでも:^update(_\\d+){3}_to(_\\d+){3}$

他の方もおっしゃっています$が、真ん中は取り外し可能です。

于 2013-05-29T23:52:53.443 に答える