繁体   English   中英

Java拆分正则表达式不起作用

[英]Java Split RegEx not working

我在 java 中的一个非常简单的任务中遇到了很多困难。 首先,我想将字符串拆分为数组,单独使用每个字母并使用正则表达式(这很重要,因为我将在此之后将其升级为更复杂的正则表达式,但我首先需要运行这个简单的)

    Stringbase = "artetbewrewcwewfd";       
    String arr2[] = base.split("\\.");

为什么我不能这样做?

    String base = "artetbewrewcwewfd";       
    String arr2[] = base.split("\\[abcdefghijklmnopqrstuvwxyz]");

甚至也不像这样。

https://ideone.com/cCYVSc

https://ideone.com/DYnh3m

感谢您的时间

请注意\\\\. (转义点)在您的第一个正则表达式中匹配一个文字点字符(并且您的字符串没有点,因此, split返回整个字符串)。

第二"\\\\[abcdefghijklmnopqrstuvwxyz]"模式相匹配的序列[abcdefghijklmnopqrstuvwxyz]因为你通过转义第一毁字符类构建体[ (和逃脱[相匹配的文字[ ,从而,闭合]也将被视为一个文字符号,而不是特殊的构造字符)。

要在字符串中的每个字符之前拆分,您可以使用

String arr2[] = "artetbew42rewcwewfd".split("(?!^)(?=.)");
System.out.println(Arrays.toString(arr2));
// => [a, r, t, e, t, b, e, w, 4, 2, r, e, w, c, w, e, w, f, d]

查看IDEONE 演示

在这里, (?!^)在字符串的最开始匹配失败(以免将空格作为第一个元素返回),并且(?=.)是在除换行符之外的任何字符之前匹配的正向前瞻。

如果您也想在换行符之前匹配,请使用Pattern.DOTALL标志,或在模式之前添加(?s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM