2016-09-01 5 views
-2

я пишу регулярное выражение в строки и шаблон, но результат разные, пожалуйста дайте мне разницуКакая разница между строковыми совпадениями и классом шаблонов шаблонов?

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import java.util.Scanner; 
class HelloWorld 
    { 

    public static void main(String s[]) 
     { 

     Pattern p = Pattern.compile("[0-255]*[.][0-255]*[.][0-255]*[.][0-255]*") ; 
     Matcher m = p.matcher("000.12.12.034"); 
     System.out.println(m.find()); 
    } 
} 

о/р истинный

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import java.util.Scanner; 
class HelloWorld 
    { 

    public static void main(String s[]) 
     { 
     String pattern = "[0-255]*[.][0-255]*[.][0-255]*[.][0-255]*"; 
     String ip = "000.12.12.034"; 
     System.out.println(ip.matches(pattern)); 
    } 
} 

о/р - ложно

так что разница между совпадениями и совпадением. ??

+2

Что говорят их соответствующие javadocs? –

+0

Я не понимаю. – umesh

+0

Когда вы приложили немало усилий, чтобы прочитать документацию по этим двум методам, что вы нашли? Что они сказали, было иначе? Что вы не понимали по поводу этих различий? –

ответ

1

1) Matcher.find() пытается найти шаблон внутри строки, а String.matches(pattern) пытается сопоставить шаблон со всей строкой.

2) Ваше регулярное выражение неверно. Вы должны использовать (([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])