Java regular expression value.split(“\\.”), “the back slash dot” divides by character?

后端 未结 2 1457
半阙折子戏
半阙折子戏 2020-12-13 09:45

From what I understand, the backslash dot (\\.) means one character of any character? So because backslash is an escape, it should be backslash backslash dot (

相关标签:
2条回答
  • 2020-12-13 10:14

    My guess is that you are missing that backslash ('\') characters are escape characters in Java String literals. So when you want to use a '\' escape in a regex written as a Java String you need to escape it; e.g.

    Pattern.compile("\.");   // Java syntax error
    
    // A regex that matches a (any) character
    Pattern.compile(".");  
    
    // A regex that matches a literal '.' character
    Pattern.compile("\\.");  
    
    // A regex that matches a literal '\' followed by one character
    Pattern.compile("\\\\.");
    

    The String.split(String separatorRegex) method splits a String into substrings separated by substrings matching the regex. So str.split("\\.") will split str into substrings separated by a single literal '.' character.

    0 讨论(0)
  • 2020-12-13 10:14

    The regex "." would match any character as you state. However an escaped dot "\." would match literal dot characters. Thus 192.168.1.1 split on "\." would result in {"192", "168", "1", "1"}.

    Your wording isn't completely clear, but I think this is what you're asking.

    0 讨论(0)
提交回复
热议问题