【问题标题】:Split using regular expression, but getting first array element as blank space使用正则表达式拆分,但将第一个数组元素作为空格
【发布时间】:2016-10-18 16:39:59
【问题描述】:

请帮我找出为什么ac[0] 是空白的

public class AddtheNumbers {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String abc="bajsd 7 jns 87 5";
        String ac[]=abc.trim().split("\\D+");

        System.out.println(ac[0]);
        System.out.println(ac[1]);
        System.out.println(ac[2]);
      }
}

【问题讨论】:

  • 它在任何不是数字的地方分割,第一个字符不是数字,所以它立即分割。在发布问题之前,请考虑一下您在做什么。下次拿出你的橡皮鸭。
  • 怎么样 //String ac[]=abc.trim().split("\\D+"); String ac[]=abc.trim().split("[a-zA-Z ]+");//Z后面的空格

标签: java regex split


【解决方案1】:

因为你不是在数字上分裂,而且第一件事不是数字。因此空白。我会尝试这样的事情

import java.util.regex.*;
public class AddtheNumbers {

    public static void main(String[] args) {
       Pattern p = Pattern.compile("-?\\d+");
       Matcher m = p.matcher("bajsd 7 jns 87 5");
       while (m.find()) {
         System.out.println(m.group());
       }
    }
}

【讨论】:

  • 感谢您的回复。我想提出一个问题
  • 什么是'-?'这里
  • 来自方便的正则表达式测试器regex101.com / -?\\d+ / g -?匹配字符 - 从字面上看(区分大小写)?量词 - 匹配 0 和 1 次,尽可能多次,根据需要返回(贪心) \\ 匹配字符 \ 字面意思(区分大小写) d+ 匹配字符 d 字面意思(区分大小写) + 量词 - 匹配 1 和无限次,尽可能多次,根据需要回馈(贪婪) 全局模式标志 g 修饰符:全局。所有匹配(第一次匹配后不返回)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多