博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !
首先介绍几个概念:
字节:byte 字符:字母或者汉字等 位:计算机语言 用来表示0或1
1 bit = 1 二进制数据
1 byte = 8 bit1 汉字 = 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());
}
}
}