正则表达式小谈

   在新的JDK中加入了对使用正则表达式的模式匹配的支持。正则表达式是根据文本匹配模式的方法-类似于编译器生成类文件的工作原理。
在正则表达式的上下文中,模式是序列的文本表示方法。例如,我们想知道一个字符序列中是否存在"money"这个词,就可以使用模式money,
因为这是精确表示该字符串的方法。
   我们这样来检验用户输入的是否为一合法的email地址:
Code:
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class TestRegex
{
 public boolean isEmail(String email)
 {
             //指定使用的模式
  Pattern pattern=Pattern.compile
            ("//p{Digit}+@//w+//.//p{Alpha}{2,3}");
  String[] words=pattern.split(email);
  Matcher matcher=pattern.matcher(email);
  if(matcher.find()&&words.length==0)
    return true;
  else
    return false;
 }
}
来看怎么用它:
Code:
public class Client
{
 public static void main(String[] args)
 {
  TestRegex regex=new TestRegex();
  String s1="DuYang163@gmail.com";
  String s2="feiyang@126.123.com";
  System.out.println(s1+(regex.isEmail(s1)?"是":"不是")+"Email格式!");
  System.out.println(s2+(regex.isEmail(s2)?"是":"不是")+"Email格式!");
 }
}
一些常用的表达式格式:
文字(Literal): 表达式内任何不具有特殊意义的字符都被看做是一个文字,并与自身匹配。
量词(Quantifier): 某些字符或者表达式,他们被用来计算一个文字或分组可以字符列中出现的次数,以便该序列与表达式匹配。
例:
? 表示出现一次或根本不出现。
* 表示出现零次或一次以上(含一次)。
+ 表示出现一次或多次。
字符类(Character class): 一个字符类就是方括号内的一个字符集,其中,匹配可以是括号内的任意一个字符。可以把字符和量词结合起来,例如,[acegikmoqsuwy*]
                        将是只包含字母表中奇数字母的任意字符列。某些字符列是预先定义好的:
/d-数字(0到9)
/D-非数字
/s-空白字符,如制表符或换行符
/S-非空白字符
/w-单字符(a到z,A到Z,0到9以及下划线)
/W-非单字字符(其他任意字符)
Posix 字符类(Posix character class): 某些字符仅在用于US-ASCII比较时才有效。
例如:
/p{Lower}-小写字符
/p{Upper}-大写字符
/p{ASCII}-所有ASCII字符
/p{Alpha}-字符字符(/p{Lower}与/p{Upper}相结合)
/p{Digit}-从0到9的数字
/p{Alnum}-字母数字字符
范围(Range): 使用短线(dash)来指定范围。例如:[A-J]表示从A到J的大写字母。
否定(Negation): 使用脱字符^表示否定字符。例如:[^A-K]表示除A到K之外的任何字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值