如何在java中使用正则表达式拆分一个大数字?
这是我的电话号码“1508261”。 最后,我想要一个列表(“15”、“08”、“261”)。 也就是说,模式应始终创建两个新数字,每个数字中有两个数字,其余数字应全部包含在最后一个(第三个)数字中 我尝试使用这种方法,但它返回(“1508261”):如何在java中使用正则表达式拆分一个大数字?,java,regex,Java,Regex,这是我的电话号码“1508261”。 最后,我想要一个列表(“15”、“08”、“261”)。 也就是说,模式应始终创建两个新数字,每个数字中有两个数字,其余数字应全部包含在最后一个(第三个)数字中 我尝试使用这种方法,但它返回(“1508261”): Pattern-Pattern=Pattern.compile(([0-9]{2})([0-9]{2})([0-9]{1,})”; Matcher Matcher=pattern.Matcher(“1508261”); ArrayList=新建A
Pattern-Pattern=Pattern.compile(([0-9]{2})([0-9]{2})([0-9]{1,})”;
Matcher Matcher=pattern.Matcher(“1508261”);
ArrayList=新建ArrayList();
while(matcher.find()){
添加(matcher.group());
}
您的代码片段根据输入字符串测试整个模式,而不是单独测试每组。您可能希望使用Matcher.matches()
和Matcher.group(int)
而不是Matcher.find()
:
Pattern-Pattern=Pattern.compile(([0-9]{2})([0-9]{2})([0-9]{1,})”;
Matcher Matcher=pattern.Matcher(“1508261”);
ArrayList=新建ArrayList();
if(matcher.matches()){
对于(int i=1;i您的代码片段针对输入字符串测试整个模式,而不是单独测试每个组。您可能希望使用Matcher.matches()
和Matcher.group(int)
而不是Matcher.find()
:
Pattern-Pattern=Pattern.compile(([0-9]{2})([0-9]{2})([0-9]{1,})”;
Matcher Matcher=pattern.Matcher(“1508261”);
ArrayList=新建ArrayList();
if(matcher.matches()){
对于(int i=1;i)您使用正则表达式有什么原因吗?为什么不使用简单的子字符串操作?@RyanS可能输入的前导字符不是数字。您使用正则表达式有什么原因吗?为什么不使用简单的子字符串操作?@RyanS可能输入的前导字符不是数字。
Pattern pattern = Pattern.compile("([0-9]{2})([0-9]{2})([0-9]{1,})");
Matcher matcher = pattern.matcher("1508261");
ArrayList<String> list = new ArrayList<String>();
while (matcher.find()) {
list.add(matcher.group());
}
Pattern pattern = Pattern.compile("([0-9]{2})([0-9]{2})([0-9]{1,})");
Matcher matcher = pattern.matcher("1508261");
ArrayList<String> list = new ArrayList<String>();
if(matcher.matches()) {
for(int i = 1;i <= matcher.groupCount();i++)
list.add(matcher.group(i));
}
System.out.println(list);