java 正则表达式用法(2)

查找一段短文中的单词、汉字、数字的个数:

import java.util.*;
import java.util.regex.*;

public class RegexDemo2 {

   public static ArrayList<String> getMatchList(String reg, String input){
         ArrayList<String> list = new ArrayList<String>(); 
         Pattern p = Pattern.compile(reg, Pattern.CASE_INSENSITIVE); 
         Matcher m = p.matcher(input);         
         while(m.find()){   
            list.add(m.group());         
         } 
         return list;    
   }
   public static void printList(ArrayList<String> list, String message){
         for(String s : list)
            System.out.println(s);   
         System.out.println("共有" + message + "个数:" + list.size()); 
   }

  public static void main(String arg[]) {

      String input = "Do one thing at a time, and do well. 一次只做一件事,并做到最好。x1,1y,2013,2014";
      String regEng = "\\b[a-z]+\\b";
      String regCn = "[\u4e00-\u9fa5]"; 
      String regNum = "\\b\\d+\\b"; 
      int eng = 0, cn = 0, num = 0; 

      ArrayList<String> listEng = getMatchList(regEng, input);
      printList(listEng, "单词");
   
      ArrayList<String> listCn = getMatchList(regCn, input);
      printList(listCn, "汉字"); 

      ArrayList<String> listNum = getMatchList(regNum, input);
      printList(listNum, "数字"); 

  }
}


/*
Do
one
thing
at
a
time
and
do
well
共有单词个数:9
一
次
只
做
一
件
事
并
做
到
最
好
共有汉字个数:12
2013
2014
共有数字个数:2
*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值