您的位置:首页 > 编程语言 > Java开发

23---java正则表达式01(简介)

2012-03-19 09:57 260 查看
匹配汉字:

public class Demo{

public static void main(String args[]) throws Exception{

String str="中国人";

if(str.matches("[\\u3E00-\\u9FA5]{3}")){

System.out.println("符合");

}

else{

System.out.println("不符合");

}

}

}

正则表达式就是处理字符串的利器:

字符串匹配(字符匹配)

字符串查找

字符串替换

注意:\在正则表达式中很特别,所以又\出现的地方我们用\\表示;

pattern---被匹配的模式;

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Demo{

public static void main(String args[]){

p("abc".matches("..."));

p("a9982a".replaceAll("\\d","-"));

Pattern p=Pattern.compile("[a-z]{3}");//创建匹配模板

Matcher m=p.matcher("fgh");//创建对应字符创的匹配器

//m.matches()进行匹配

p(m.matches());

}

public static void p(Object o){

System.out.println(o);

}

}

1、MetaCharacters:

初步认识认识一下:点(.)星(*)加(+)问号(?):

.:表示一个字符;

X*:X,表示零个或多个字符;

X+:X,表示一个或多个;

X?:X,一个或者零个;

X{n}:X,恰好出现n此;

X{n,}:X,至少出现n次;

X{n,m}:X,至少出现n此但是不能超过m此

预定义字符类:----中括号只匹配一个字符;

\d 数字:[0-9]

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Demo{

public static void main(String args[]){

p("a".matches("."));//.表示一个字符

p("aa".matches("aa"));

p("aaaa".matches("a*"));//表示a出现零到多次

p("aaaa".matches("a+"));//表示a出现一到多次

p("".matches("a*"));

p("aaaa".matches("a?"));//表示a出现零到一次

p("".matches("a?"));

p("a".matches("a?"));

p("122334444555".matches("\\d{3,100}"));//表示数字3到100个

p("192.168.1.0".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));

p("192".matches("[0-2][0-9][0-9]"));//表示每个数字的范围

}

public static void p(Object o){

System.out.println(o);

}

}

范围:

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Demo{

public static void main(String args[]){

p("a".matches("[abc]"));//表示abc中的一个字符

p("a".matches("[^abc]"));//表示不是abc中的任意一个字符

p("A".matches("[a-zA-Z]"));//表示a到z或者A到Z之间的字符

p("A".matches("[a-z]|[A-Z]"));//表示a到z或者A到Z之间的字符

p("A".matches("[a-z[A-Z]]"));//表示a到z或者A到Z之间的字符

p("R".matches("[A-Z&&[RFG]]"));//表示A到Z之间并且是RFG中的一个字符

}

public static void p(Object o){

System.out.println(o);

}

}

认识 \s \w \d \:

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Demo{

public static void main(String args[]){

p(" \n\r\t".matches("\\s{4}"));

p(" ".matches("\\s"));

p("a_8".matches("\\w{3}"));

p("abc444*&%".matches("[a-z]{1,3}\\d+[*&%$]+"));

//java中一个反斜杠表示转义字符,而在正则表达式中反斜杠有特殊意义,所以得用四个

p("\\".matches("\\\\"));

}

public static void p(Object o){

System.out.println(o);

}

}

边界:

^:在中括号里面表示取反,不在中括号里面表示行的开头;

$:表示行的结尾;

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 上一个匹配的结尾

\Z 输入的结尾,仅用于最后的结束符(如果有的话)

\z 输入的结尾

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Demo{

public static void main(String args[]){

p("hello sir".matches("^h.*"));//表示行已h开头后面是一个或多个字符

p("hello sir".matches(".*ir&"));//表示以ir结尾,前面有一个或多个字符

//表示已h开头后面跟一到三个a到z的字符,后面是o,在后面是单词边界,在后面是一到多个字符

p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));

p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));

}

public static void p(Object o){

System.out.println(o);

}

}

注意Matcher类中的reset()、find()、start()、end()方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: