^ regex分割什么样的字符串

时间:2018-11-02 23:19:02

标签: java regex

如果我有

这样的分割语句
String array1[]= test.split("^");

什么是可能的测试字符串值,以便此(“ ^”)正则表达式将拆分测试字符串?

我知道^是Java正则表达式中的特殊字符-表示输入的“开头”。

2 个答案:

答案 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 : \

这确认整个字符串都已匹配,并且没有拆分发生。

注意:我也已经使用其他字符串对此进行了测试,但是我没有将它们全部粘贴到此代码中。