35

据我了解,反斜杠点(\.)表示任何字符的一个字符?所以因为反斜杠是转义,所以应该是反斜杠反斜杠点("\\."

这对字符串有什么作用?我刚刚在我正在处理的现有代码中看到了这一点。据我了解,它将字符串拆分为单个字符。为什么这样做而不是String.toCharArray(). 那么这会将字符串拆分为一个字符串数组,该数组中的每个字符串只包含一个字符?

4

2 回答 2

71

我的猜测是你错过了反斜杠('\')字符是Java字符串文字中的转义字符。因此,当您想在编写为 Java 字符串的正则表达式中使用 '\' 转义时,您需要对其进行转义;例如

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)方法将字符串拆分为由匹配正则表达式的子字符串分隔的子字符串。因此str.split("\\.")将拆分str为由单个文字“。”分隔的子字符串。特点。

于 2009-09-26T02:59:06.480 回答
7

正则表达式“。” 将匹配您所说的任何字符。但是转义点“\”。将匹配文字点字符。因此 192.168.1.1 在“\”上拆分。将导致 {"192", "168", "1", "1"}。

您的措辞并不完全清楚,但我认为这就是您要问的。

于 2009-09-26T02:48:31.993 回答