[英]Java Split RegEx not working
我在 java 中的一个非常简单的任务中遇到了很多困难。 首先,我想将字符串拆分为数组,单独使用每个字母并使用正则表达式(这很重要,因为我将在此之后将其升级为更复杂的正则表达式,但我首先需要运行这个简单的)
Stringbase = "artetbewrewcwewfd";
String arr2[] = base.split("\\.");
为什么我不能这样做?
String base = "artetbewrewcwewfd";
String arr2[] = base.split("\\[abcdefghijklmnopqrstuvwxyz]");
甚至也不像这样。
感谢您的时间
请注意\\\\.
(转义点)在您的第一个正则表达式中匹配一个文字点字符(并且您的字符串没有点,因此, 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]
在这里, (?!^)
在字符串的最开始匹配失败(以免将空格作为第一个元素返回),并且(?=.)
是在除换行符之外的任何字符之前匹配的正向前瞻。
如果您也想在换行符之前匹配,请使用Pattern.DOTALL
标志,或在模式之前添加(?s)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.