【问题标题】:How can I split string using Regular Expression(Pattern)?如何使用正则表达式(模式)拆分字符串?
【发布时间】:2015-04-30 06:21:35
【问题描述】:

我想使用正则表达式拆分我的字符串(例如“20150101”)。
例如,我需要这些值:“2015”、“01”、“01”

【问题讨论】:

标签: java


【解决方案1】:
String pattern = "(....)(..)(..)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(inputString);//inputString:"20150101"

现在您可以使用m.group(x) 来获取字符串的各个部分。例如:

m.group(1) 是前四位数字(您问题中的“2015”)。

【讨论】:

  • 你确定第一组不是m.group(0)
  • 组 0 始终是整场比赛
【解决方案2】:

没有更多细节很难说,但请尝试:

(\d{4})(\d{2})(\d{2})

您的Matcher 的三个捕获的group 引用将具有您想要的值。

【讨论】:

    【解决方案3】:

    只要结合这两个答案都是有效的

    第一

    public static void main(String[] args) {
                String input = "20150101";
                String pattern = "(....)(..)(..)";
                Pattern r = Pattern.compile(pattern);
                Matcher m = r.matcher(input);       
                m.find();
                for(int i=1;i<=m.groupCount();i++){
                    String token = m.group( i ); 
                      System.out.println(token);
                }
        }
    

    第二

    public static void main(String[] args) {
                String input = "20150101";
                String pattern = "(\\d{4})(\\d{2})(\\d{2})";
                Pattern r = Pattern.compile(pattern);
                Matcher m = r.matcher(input);       
                m.find();
                for(int i=1;i<=m.groupCount();i++){
                    String token = m.group( i ); 
                      System.out.println(token);
                }
        }
    

    【讨论】:

      【解决方案4】:
      private static final Pattern DATE_PATTERN = Pattern.compile("^([\\d]{4})([\\d]{2})([\\d]{2})$");
      
      public static Optional<String[]> split(String str) {
          final Matcher matcher = DATE_PATTERN.matcher(str);
          if (matcher.find()) {
              final String[] array = new String[3];
              array[0] = matcher.group(1);
              array[1] = matcher.group(2);
              array[2] = matcher.group(3);
              return Optional.of(array);
          }
          return Optional.empty();
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2011-12-28
        • 2017-02-23
        相关资源
        最近更新 更多