我在java中遇到一个非常简单的任务遇到了很多困难。首先,我想将一个字符串拆分为数组,每个字母单独使用正则表达式(这很重要,因为我会在此之后将其升级为更复杂的正则表达式,但我首先需要这个简单的运行)
Stringbase = "artetbewrewcwewfd";
String arr2[] = base.split("\\.");
为什么我不能这样做?
String base = "artetbewrewcwewfd";
String arr2[] = base.split("\\[abcdefghijklmnopqrstuvwxyz]");
甚至不喜欢这样。
谢谢你的时间答案 0 :(得分:1)
请注意,第一个正则表达式中的\\.
(转义点)与文字点字符匹配(并且您的字符串没有点,因此,split
会返回整个字符串。)
第二个"\\[abcdefghijklmnopqrstuvwxyz]"
模式匹配[abcdefghijklmnopqrstuvwxyz]
的序列,因为您通过转义第一个{{1}来破坏字符类构造(并且转义的[
与文字[
匹配,因此,结束[
也被视为文字符号,而不是特殊的构造字符。)
要在字符串中每个字符之前拆分,您可以使用
]
请参阅IDEONE demo
这里,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]
在字符串的最开头失败匹配(以便不返回空格作为第一个元素)并且(?!^)
是一个正面的先行,在任何字符之前匹配但是换行符。
如果您想在换行前添加,请使用(?=.)
标记,或在模式前添加Pattern.DOTALL
。