Java基础之字符串匹配大全

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 

首先介绍几个概念:

字节:byte 字符:字母或者汉字等 位:计算机语言  用来表示0或1

1 bit     = 1  二进制数据 

1 byte  = 8  bit  
1 字母 = 1  byte = 8 bit 英文输入 如阿拉伯数字同样如此

1 汉字 = 2  byte = 16 bit 汉语输入

varchar(400) 表达最大长度为400 字节,即 400个字母或者200个汉字。

1M=1024*1024 byte

 

1、正则表达式

首先介绍下正规表达式,它的出现为匹配查询提供了便利,成为数据校验的“利器”。支持数字、英文字母、空格等,我们只讲最常用的。如果有更深层次的需要,可以查阅Java API 包名为“java.util.regex”


^:代表字符串开始,*:代表多个字符

 如上图regex 意为以c开头有多个b的字符串,结果输出cbb


$:代表结尾,?:代表一个字符,\d:代表数字

如上图regex意为找到一个以a开头,有一个b,且结尾以一个数字的串,结果输出ab1


\s:代表空格

 如上图,将str里两个空格变成一个空格,输出

 

\w:代表单个字符,.:点代表任意一个字符

 如上图,意为以任意字符开头,有多个d,并以字符结尾的字符串,输出结果为cddd

下面是几个常用的例子:


如上图,regex表示以0-9或a-f或A-F为内容的4个字符,结尾以数字,输出结果为c6dD3


如上图,regex表示4个字符,输出结果为了abb1,缺点在于把数字1也当成了字符。


如上图,两种方法均可验证18 位身份证,但好坏大家一眼就能看的出,输出中间那个串


如上图,方法比较正宗,用Pattern定义对象,使用Matcher定义对象来匹配,表示多个a一个b 的字符串,匹配结果b为true。


如上图,输出结果,模糊匹配与精确匹配。

2、字符串简单匹配

如上图最简单匹配,也最迅速,也最有效。

补充,"a".matches("[^abc]");取除了abc之外的其它字符

"a".matches("[abc]|[ABC]");

"a".matches("abc[ABC]");

"a".matches("abcABC");都表示取abc或者ABC

匹配网址

public class TestEmail {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(
"D:\\share\\is0.html"));
String line="";
while((line=br.readLine())!=null){
parse(line);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


private static void parse(String line) {
// TODO Auto-generated method stub
/**w表示以字母或者.或者-*/
Pattern p=Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
java.util.regex.Matcher m=p.matcher(line);
while(m.find()){
System.out.println(m.group());
}
}
}

原文地址:https://www.cnblogs.com/fengju/p/6174513.html