黑马程序员-java基础 正则表达式

---------------------- android培训java培训 、期待与您交流! ----------------------

 

 

正则表达式:  符合一定规则的表达式。用一些特定的符号来表示一些代码操作。
              用于专门操作字符串。可以简化对字符串的复杂操作。不过阅读性很差


正则表达式功能

1 String的matches()方法,用于给指定的字符串设定要判断的规则
                //判断电话号码 必须1开头,第二位只能是3 5 8 ,供11位,且必须是数字
  String tel = "13632607600";
  String telma = "1[358]\\d{9}";//创建规则
  boolean b = tel.matches(telma);//给tel指定规则,符合则返回true

2 切割
 split(String regex, int limit)  根据匹配给定的正则表达式来拆分此字符串。

String reg=" +"; //按照多个空格进行切割
String reg="用.进行切割
String reg="\\\\";//用\\进行切割
String reg="(.)\\1+";//按照叠词(2个或2个以上相同的字符)进行切割


3 替换
replaceAll(String regex, String replacement) ;使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

 

replaceAll(String,"\\d{5,}","#");  将连续5个或5个以上的数字替换成#

replaceAll(String,"(.)\\1+","#"); 将叠词替换成#
replaceAll(String,"(.)\\1+","$1"); 将叠词替换成一个字符


4 获取
 1 将正则表达式封装成对象 用Pattern.compile(reg);
 2 让正则表达式和要操作的字符串关联
 3 关联后获取正则表达式匹配引擎
 4 通过引擎对符合规则的字串进行操作

public class Ip {
 public static void main(String[] args) {
  // 邮箱判断
  String mail = "hei ma hei ma chong a ha ha  ";
  String telma = "\\b[a-z]{2}\\b";
  // 把规则封装成对象
  Pattern p = Pattern.compile(telma);
  // 让正则对象和要操作的字符串关联,获取匹配器对象
  Matcher m = p.matcher(mail);

  // boolean b = m.find();//对字符串进行符合规则匹配查找
  // String s = m.group();//获得符合规则的字符串
  while (m.find()) {
   String s = m.group();
   System.out.println(s);
  }

 }

}

 


字符
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')


字符类

abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

 

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]


Greedy 数量词

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

边界匹配器

^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

 


public class Ip {
 public static void main(String[] args) {
  // 邮箱判断
  String mail = "hks2008123@163.com";
  String telma = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
  // 把规则封装成对象
  Pattern p = Pattern.compile(telma);
  // 让正则对象和要操作的字符串关联,获取匹配器对象
  Matcher m = p.matcher(mail);
  boolean b = m.matches();
  System.out.println(b);

 }

}


 

 

 

---------------------- android培训java培训 、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值