首页 技术 正文
技术 2022年11月9日
0 收藏 791 点赞 4,857 浏览 2617 个字

在Java中,字符串的匹配可以使用下面两种方法:

        1、使用正则表达式判断字符串匹配        2、使用Pattern类和Matcher类判断字符串匹配
正则表达式的字符串匹配:        正则表达式:定义一组字符串的一系列字符和符号,它由常量字符和特殊符号构成。        下面是正则表达式的一些预定义字符类,实际上是一些转义字符序列:             
  1、\d   代表任何数字             
  2、\D  代表任何非数字字符             
  3、\w  代表任何单字字符(如:字母、数字、下划线等等)             
  4、\W  代表任何非单字字符             
  5、\s   代表任何空白字符             
  6、\S   代表任何非空白字符        为了匹配一组没有预定义字符类的字符,可以用[]指明        正则表达式常用*、+、?等来表示匹配字符的个数             
  1、*  表示匹配字符个数为0个或多个             
  2、+  表示匹配字符个数为1个或多个             
  3、? 表示匹配字符个数为0个或1个             
  4、{n} 表示匹配字符的个数正好为n个             
  5、{n,} 表示匹配字符个数至少为n个             
  6、{n,m} 表示匹配字符个数至少为n个,最多为m个
        上面简要的介绍了正则表达式的语法,下面通过实例来说明具体用法:             
  定义如下的正则表达式regex:             
  String  regex=”[0]\\d{2,3}[-][1-9]\\d{6,7}”             
  含义说明如下:             
          1、[0]表示字符串中第一个字符必须是0             
          2、\\d{2,3}数字0后面最少2个数字、最多3个数字             
          3、[-]表明这里必须是连字符-             
          4、[1-9]表示只能是数字1~9             
          5、\\d{6,7}表示这里最少6个数字,最多7个数字下面通过Java程序来实现下述实例:使用正则表达式判断用户输入的电子邮件地址是否有效,假设要求的格式为:大小写字母开头,后0个或则多个单字符(\\w*),然后是[@],其后是一个或多个单字字符,接着是[.],然后是至少两个单字字符。

package tengwei.com;import java.util.regex.Pattern;import javax.swing.JOptionPane;public class UseMatchesMethod {public static void main(String args[]){String input = JOptionPane.showInputDialog("请输入有效的电子邮件!");String reg = "[a-zA-Z]\\w*[@]\\w+[.]\\w{2,}";if(input.matches(reg))System.out.println("是有效的电子邮件!");elseSystem.out.println("不是有效的电子邮件!");if(Pattern.matches(reg, input))System.out.println("是有效的电子邮件");elseSystem.out.println("不是有效的电子邮件!");}}

使用Pattern类和Matcher类判断字符串匹配        类java.util.regex.Pattern用于创建匹配模式(Pattern)和匹配器(Match)。在上面的程序中,我们使用了该类的静态方法matches(reg,input)判断input是否与给定的正则表达式匹配。对于多次匹配,需要重复调用该方法,因此对于重复匹配而言,它的效率不高。如果需要多次使用一种模式,编译一次后重用此模式比每次都调用此方法效率更高

package tengwei.com;import java.util.regex.Matcher;import java.util.regex.Pattern;public class UsePattern {public static void main(String[] args) {// TODO Auto-generated method stubString str="We call this the live-code approach."+"These examples are available from three locations-they are "+"on the CD that accompanies this book";Pattern expression = Pattern.compile("[a-zA-Z]+");//创建匹配模式Matcher matcher=expression.matcher(str);//通过匹配模式得到匹配器//通过这种方式来进行重复匹配的效率较高String word=null;int n=0;while(matcher.find())//扫描是否有匹配的子串,如果匹配器没有重置,则从当前下一个还没进行匹配的字符开始匹配{word=matcher.group();//得到匹配的子串System.out.println(word+"\t");if((n+1)%4==0)//每行显示四个单词System.out.println();n++;}System.out.print("\n单词总数:"+n);System.out.println("\n单词字母9个及以上的单词有:");Pattern expression1 = Pattern.compile("[a-zA-Z]{9,}");Matcher matcher1=expression1.matcher(str);while(matcher1.find()){word=matcher1.group();System.out.println(word+"\n");}System.out.println();}}

原文:http://blog.csdn.net/tengweitw/article/details/24727521

作者:nineheadedbird

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,490
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,905
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,738
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,491
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,129
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,292