码迷,mamicode.com
首页 > 编程语言 > 详细

Java正则表达式

时间:2015-05-11 08:57:14      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   java   pattern   matcher   

现在有一个字符串: [“1002201504303120”,”1002201504253100”,”1002201504213080”],提取数字串到List中

  • 解法一:
import java.util.*;
public class Test1
{
    public static void main(String[] args) 
    {
        String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
        String[] s = str.split("\"");
        List<String> list = new ArrayList<String>();
        for(int i = 0; i < s.length ; i ++){
            if(s[i].length() > 1){
                list.add(s[i]);
            }
        }
        System.out.println(list);
    }
}

上述解法很简单,思想也很简单,接下来看看正则表达式处理。

  • 解法二
import java.util.*;
public class Test1
{
    public static void main(String[] args) 
    {
        String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
        String[] s = str.split("[^0-9]");
        List<String> list = new ArrayList<String>();
        for(int i = 0; i < s.length ; i ++){
            if(s[i].length() != 0){
                list.add(s[i]);
            }
        }
        System.out.println(list);
    }
}

通过上述例子,可知String的split方法支持正则表达式

  • 解法三
public static void main(String[] args) {
        String str = "[\"1002201504303120\",\"1002201504253100\",\"1002201504213080\"]";
        Pattern p = Pattern.compile("\\d{16}");
        Matcher matcher = p.matcher(str);
        List<String> list = new ArrayList<>();
        while(matcher.find()){
            String strVal = matcher.group();
            list.add(strVal);
        }
        if(!list.isEmpty()){
            for (String s : list) {
                System.out.println(s);
            }
        }
    }

Java中的正则表达式

java.util.regex:用于匹配字符序列与正则表达式指定模式的包。包含两个类,Matcher和Pattern。

Matcher:通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
Pattern:正则表达式的编译表示形式。
PatternSyntaxException : 抛出未经检查的异常,表明正则表达式模式中的语法错误。

Pattern

Pattern:正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

典型的调用顺序:
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();

方法

  • static Pattern compile(String regex)
    将给定的正则表达式编译到模式中。
  • static Pattern compile(String regex, int flags)
    将给定的正则表达式编译到具有给定标志的模式中。
  • int flags()
    返回此模式的匹配标志。
  • Matcher matcher(CharSequence input)
    创建匹配给定输入与此模式的匹配器。
  • static boolean matches(String regex, CharSequence input)
    编译给定正则表达式并尝试将给定输入与其匹配。
  • String pattern()
    返回在其中编译过此模式的正则表达式。

Matcher

通过解释 Pattern 对 character sequence 执行匹配操作的引擎。

通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
1、matches 方法尝试将整个输入序列与该模式匹配。
2、lookingAt 尝试将输入序列从头开始与该模式匹配。
3、find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

方法

  • boolean find()
    尝试查找与该模式匹配的输入序列的下一个子序列。
  • boolean find(int start)
    重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
  • String group()
    返回由以前匹配操作所匹配的输入子序列。
  • String group(int group)
    返回在以前匹配操作期间由给定组捕获的输入子序列。
  • int groupCount()
    返回此匹配器模式中的捕获组数。
  • boolean lookingAt()
    尝试将从区域开头开始的输入序列与该模式匹配。
  • boolean matches()
    尝试将整个区域与模式匹配。
  • Pattern pattern()
    返回由此匹配器解释的模式。

Java正则表达式

标签:正则表达式   java   pattern   matcher   

原文地址:http://blog.csdn.net/havedream_one/article/details/45628417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!