#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",... )
‘.’ является шаблоном и должен быть заключен в кавычки.
(подстановочный знак = «сопоставить любой символ»)