根据我的理解,反斜杠点(\.
)表示任何字符的一个字符?因为反斜杠是一个转义,它应该是反斜杠反斜杠点("\\."
)
这对字符串有什么作用?我刚刚在我正在处理的现有代码中看到了这一点。据我所知,它会将字符串拆分为单个字符。为什么这样做而不是String.toCharArray()
。那么这会将字符串拆分为一个字符串数组,该数组只包含数组中每个字符串的一个字符?
答案 0 :(得分:70)
我的猜测是你缺少反斜杠('\')字符是Java String文字中的转义字符。因此,当你想在一个用Java String编写的正则表达式中使用'\'转义时,你需要转义它; 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("\\\\.");
String.split(String separatorRegex)
方法将String拆分为由与正则表达式匹配的子字符串分隔的子字符串。因此str.split("\\.")
会将str
拆分为由单个文字“。”分隔的子字符串。字符。
答案 1 :(得分:7)
正则表达式“。”会像你所说的那样匹配任何角色。但是转义点“\”。将匹配文字点字符。因此192.168.1.1拆分为“\”。会导致{“192”,“168”,“1”,“1”}。
你的措辞并不完全清楚,但我认为这就是你所要求的。