Java 正则表达式 value.split(“\\.”), “the back slash dot” 按字符划分?

2022-09-01 06:31:50

据我所知,反斜杠点()表示任何字符的一个字符?因此,由于反斜杠是一种转义,因此它应该是反斜杠反斜杠点(\."\\.")

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


答案 1

我的猜测是,您缺少反斜杠('\')字符是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 拆分为子字符串,这些子字符串由与正则表达式匹配的子字符串分隔。因此,将拆分为由单个文字“.”字符分隔的子字符串。String.split(String separatorRegex)str.split("\\.")str


答案 2

正则表达式 “.” 将匹配您声明的任何字符。但是,转义的点“\.”将与文字点字符匹配。因此,192.168.1.1 拆分为 “\.” 将导致 {“192”, “168”, “1”, “1”}。

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