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 を返します。
"^update_\\d_\\d_\\d{1,2}_to_\\d_\\d_\\d{1,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);
より短い正規表現:^update(_\\d){2}_\\d{1,2}_to(_\\d){2}_\\d{1,2}$
またはこれでも:^update(_\\d+){3}_to(_\\d+){3}$
他の方もおっしゃっています$
が、真ん中は取り外し可能です。