【Java编程】Java中的字符串匹配

在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("是有效的电子邮件!");
		else
			System.out.println("不是有效的电子邮件!");

		if(Pattern.matches(reg, input))
			System.out.println("是有效的电子邮件");
		else
			System.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 stub
		String 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

时间: 2024-09-16 03:33:57

【Java编程】Java中的字符串匹配的相关文章

Java 编程技术中汉字问题的分析及解决(转)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日内容: 汉字编码的常识 Java 中文问题的初步认识 Java 中文问题的表层分析及处理 Java 中文问题的根源分析及解决 Java Servlet 中文问题的根源 修改 Servlet.jar 中文乱码的处理函数 参考资料 作者简介在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Jav

Java 编程技术中汉字问题的分析及解决,文件操作

编程|汉字|解决|问题 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的 乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java 语言 默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编 码呢?本文将从汉字编码的常识入手,结合 Java 编程实例,分析以上两个问题并提出 解决它们的方案. 现在 Java 编程语言已经广

Java 编程技术中汉字问题的分析及解决(转自IBM)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编

Java 编程技术中汉字问题的分析及解决

编程|汉字|解决|问题 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编程实例,分析以上两个问题并提出解决它们的方案. 现在 Java 编程语言已经广泛应用于

Java编程技术中汉字问题的分析及解决

在基于Java语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java语言默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合Java编程实例,分析以上两个问题并提出解决它们的方案. 现在Java编程语言已经广泛应用于互联网世界,早在Sun公司开发Java语言的时候

java-关于JAVA编程思想中synchronized和ReentrantLock

问题描述 关于JAVA编程思想中synchronized和ReentrantLock 在学习JAVA编程思想并发一章时,关于synchronized和ReentrantLock的例子运行 结果与书中不一致.代码如下: package thinking.in.java.chapter21; class Pair { private int x,y; public Pair(int x, int y) { this.x = x; this.y = y; } public Pair() { this(

java统计字符串中重复字符出现次数的方法_java

本文实例讲述了java统计字符串中重复字符出现次数的方法.分享给大家供大家参考,具体如下: package com; import org.junit.Test; /** * 统计一个字符串的重复字符出现的次数 * * @author zdw * */ public class StringTest { @Test public void test() { String s = "fdfaacceeeeeeeeeeeegghikkkkkoooo"; count(s); } public

string-java中关于字符串匹配的问题,哪里出了问题

问题描述 java中关于字符串匹配的问题,哪里出了问题 /* 需求:当前有一张关键词表和一个新闻文本 要把在文本中所包含的词表中的关键词标识出来,(在这里我用的是前后加标识符) 然后输出到另一个文本/ import java.io.; public class adverbSiged { static File txtFile;// 将所有路径定义为全局变量 static File advFile; static File targetFile; static String beginSign

mysql中的字符串匹配的原理是什么

问题描述 mysql中的字符串匹配的原理是什么 mysql中的字符串匹配的原理是什么?有这方面的书或者资料么? 解决方案 你指的是like么?问问题能不能别那么含糊 解决方案二: http://www.chinaz.com/program/2010/0304/107774.shtml 解决方案三: 不太懂你想问的是什么,请说清楚一点 解决方案四: mysql是开源的. 解决方案五: http://www.2cto.com/database/201309/241752.html 解决方案六: 查找