Сопоставление шаблонов со строками, разделенными точками в Java

#java #regex

#java #регулярное выражение

Вопрос:

Мне нужно найти строки, соответствующие определенному шаблону. Например, в следующем условии:

 if("1.6.1.1.60885.5".matches("1.6.1.1.n.5".replaceAll("n", "\\d{0,10}")))
  

тогда это должно быть true, поскольку n может быть любым целым числом. 60885 — целое число. Это работает нормально.

 if("1.6.1.1.60885".matches("1.6.1.1.n.5".replaceAll("n", "\\d{0,10}")))
  

тогда оно должно быть false. Но я понимаю это также как истину.

Мне просто нужно, чтобы n было любым целым числом, но необходимо учитывать положение точек. Кто-нибудь может подсказать, как я могу этого добиться.

Комментарии:

1. replaceAll(«n», «\d{0,10}) ??

2. Если я использую replaceAll(«n», «\d{0,10}»), то if(«1.6.1.1.60885.5».matches(«1.6.1.1.n.5».replaceAll(«n», «\d{0,10}»))) выдаст false вместо true.

Ответ №1:

 matches("1\.6\.1\.1\.n\.5",... )
  

‘.’ является шаблоном и должен быть заключен в кавычки.

(подстановочный знак = «сопоставить любой символ»)