Java正则表达式value.split(";\\.";),";反斜线圆点“;按性格划分?

Java正则表达式value.split(";\\.";),";反斜线圆点“;按性格划分?,java,regex,backslash,Java,Regex,Backslash,据我所知,反斜杠点(\.)表示任何字符中的一个字符?因为反斜杠是转义,所以它应该是反斜杠反斜杠点(“\\。”) 这对字符串有什么影响?我只是在我正在编写的现有代码中看到了这一点。据我所知,它会将字符串拆分为单个字符。为什么这样做而不是String.tocharray()。因此,这会将字符串拆分为一个字符串数组,该数组中的每个字符串只包含一个字符。正则表达式“.”将匹配您声明的任何字符。但是,转义点“\”将匹配文字点字符。因此,192.168.1.1在“\”上拆分将导致{“192”、“168”、“

据我所知,反斜杠点(
\.
)表示任何字符中的一个字符?因为反斜杠是转义,所以它应该是反斜杠反斜杠点(
“\\。”

这对字符串有什么影响?我只是在我正在编写的现有代码中看到了这一点。据我所知,它会将字符串拆分为单个字符。为什么这样做而不是
String.tocharray()
。因此,这会将字符串拆分为一个字符串数组,该数组中的每个字符串只包含一个字符。

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


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

我猜您缺少反斜杠(“\”)字符是Java字符串文字中的转义字符。因此,当您想在作为Java字符串编写的正则表达式中使用“\”转义时,您需要转义它;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(stringseparatorregex)
方法将字符串拆分为子字符串,子字符串由与正则表达式匹配的子字符串分隔。因此,
str.split(\\”
str
拆分为子字符串,子字符串由单个文字字符分隔。

::它工作正常。!但你能不能在这方面多说点,比如为什么要打四个反斜杠?不应该有三个吗?在正则表达式中必须转义一次反斜杠。那就是2。这两个反斜杠都需要在字符串文本中转义。这等于4。三个反斜杠将导致Java编译错误。自己试试看。为什么Pattern.compile(“\”);产生语法错误?因为
“\”
是Java字符串文字,而
\。
不是Java字符串文字中的合法转义序列。