Java 使用此正则表达式拆分字符串:[\\dc]+
这是一个相对简单的带有拆分的java问题Java 使用此正则表达式拆分字符串:[\\dc]+,java,regex,string,Java,Regex,String,这是一个相对简单的带有拆分的java问题 public class Main { public static void main(String[] args) { String[] tokens = "aa33aaca^aa".split("[\\dc]+"); for (int i = 0; i < tokens.length; i++) System.out.println(tokens[i]); } } [\\dc]
public class Main {
public static void main(String[] args) {
String[] tokens = "aa33aaca^aa".split("[\\dc]+");
for (int i = 0; i < tokens.length; i++)
System.out.println(tokens[i]); }
}
[\\dc]+是如何工作的 这将通过至少重复一次的数字和字符“c”的任意组合来分割测试:
\\d-任意数字[0-9]
c-字符“c”
[]+-此集合中的字符至少可以出现一次
因此,您的字符串将按如下方式拆分:
1 2
aa[33]aa[c]a^aa
拆分分隔符:
数字相关2次
字符c
这将通过至少重复一次的数字和字符“c”的任意组合来分割测试:
\\d-任意数字[0-9]
c-字符“c”
[]+-此集合中的字符至少可以出现一次
因此,您的字符串将按如下方式拆分:
1 2
aa[33]aa[c]a^aa
拆分分隔符:
数字相关2次
字符c
除了上面的优秀答案外,请注意,如果您在在线正则表达式测试器中测试[\\dc]+,如或其他,此正则表达式将与aa33aaca^aa中的33不匹配。他们会说:\d映射到任何数字字符0-9
原因是在String.split中,我们将String作为参数,因此我们需要额外的\来形成转义序列以使\d生效 除了上面的优秀答案外,请注意,如果您在在线正则表达式测试器中测试[\\dc]+,如或其他,此正则表达式将与aa33aaca^aa中的33不匹配。他们会说:\d映射到任何数字字符0-9
原因是在String.split中,我们将String作为参数,因此我们需要额外的\来形成转义序列以使\d生效 我知道输出的第三行是如何被分割的,这是由于c,但是我和另一部分混淆了:什么是不清楚的?它完全按照你的要求去做,如果那不是你所期望的,那么请描述你真正想要发生的事情。并考虑在java文档上查询它的ReGEXP,将用一个数字或C字符分隔符来拆分。所以它匹配33和c。这就是为什么你会收到3个结果:aa,aa,a^aa。我知道输出的第三行是如何被分割的,因为c,但我和另一部分混淆了:什么是不清楚的?它完全按照你的要求去做,如果那不是你所期望的,那么请描述你真正想要发生的事情。并考虑在java文档上查询它的ReGEXP,将用一个数字或C字符分隔符来拆分。所以它匹配33和c。这就是为什么您会收到3个结果:aa,aa,a^aa。那么这是否意味着表达式\\d将任何数字拆分为一个字符串?哇,显然是的,非常感谢!!!那么这是否意味着表达式\\d将任何数字拆分为字符串?哇,显然是的,非常感谢!!!