如果我有
这样的分割语句String array1[]= test.split("^");
什么是可能的测试字符串值,以便此(“ ^”)正则表达式将拆分测试字符串?
我知道^是Java正则表达式中的特殊字符-表示输入的“开头”。
答案 0 :(得分:4)
什么是可能的测试字符串值,以便此(“ ^”)正则表达式将拆分测试字符串?
^
与Java中的行首匹配。
根据模式documentation:
默认情况下,正则表达式
^
和$
忽略行终止符,并且仅分别在整个输入序列的开头和结尾匹配。 如果激活了MULTILINE
模式,则^
在输入的开头和任何行终止符之后(在输入的结尾除外)匹配。在MULTILINE
模式下,{{ 1}}在行终止符或输入序列末尾之前匹配。 (强调,我的)
因此,以下代码将产生以下输出:
$
输出:
Pattern pattern = Pattern.compile("^", Pattern.MULTILINE);
System.out.println(Arrays.toString(pattern.split("Test\nTest")));
如您所见,[Test
, Test]
已成功拆分。
答案 1 :(得分:0)
我相信这不会“拆分”任何字符串,而只是匹配任何字符串的第一个字符,从而使数组长度为1,而内部仅包含原始字符串。
这是我用于测试的代码:
public static void main(String[] args) {
List<String[]> allArrays = new ArrayList<>();
String[] a1 = "afeafwewa".split("^");
String[] a2 = " fwaefawwa ".split("^");
String[] a3 = "fawef feawf a".split("^");
String[] a4 = "L feawf :::".split("^");
String[] a5 = "awefawefafewf \\\\\\".split("^");
String[] a6 = "\"".split("^");
String[] a7 = "\\".split("^");
allArrays.add(a1);
allArrays.add(a2);
allArrays.add(a3);
allArrays.add(a4);
allArrays.add(a5);
allArrays.add(a6);
allArrays.add(a7);
allArrays.forEach(strings -> System.out.println(strings.length + " : " + strings[0]));
}
以下是输出:
1 : afeafwewa
1 : fwaefawwa
1 : fawef feawf a
1 : L feawf :::
1 : awefawefafewf \\\
1 : "
1 : \
这确认整个字符串都已匹配,并且没有拆分发生。
注意:我也已经使用其他字符串对此进行了测试,但是我没有将它们全部粘贴到此代码中。