正则表达式之基础1

       正则表达式就是用来匹配。例如检验一串字符是否为手机号码:1、只能是数字组成;2、有十一位数字;3、只能以‘1’开头;4、第二位只能是‘3’、‘5’、‘8’;满足这四项的就是手机号码,正则可以帮助实现。

  以下简单代码可帮助理解:

package com.zhengze;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//Function1();
//Function2();
//Function3();
Function4();
}
/*
*演示匹配
*matches
*/
public static void Function1(){
String str = "15200000000";
String mat = "1[358][0-9]{9}"; //也可以写成"1[358]\\d{9}"
boolean b = str.matches(mat);
System.out.println(str+":"+b);
}
/*
* 演示切割
* split
*/
public static void Function2(){
String str = "大明 大孩       大米";
String [] names = str.split(" +"); //有个+号表示中间可以有多个空格
for(String name : names){
System.out.println(name);
}
String str1 = "小明mmmmmmm小孩eeeeeeeeeee小米";
String [] names1 = str1.split("(.)\\1+");//(.)表示一个组,\\1表示第一组,+号表示多个
for(String name1 : names1){
System.out.println(name1);
}
}
/*
* 演示替换
*/
public static void Function3(){
String str1 = "optimistictttttttttt";
String word1 = str1.replace('i','o');   
System.out.println(word1); 
//optimistictttttttttt-->optomostoctttttttttt

//美元符号表示将重复的t显示为一个;如果是#(或其他),则表示用#代替t
String word2 = str1.replaceAll("(.)\\1+", "$1");    
System.out.println(word2); 
//optimistictttttttttt-->optimistict

String tel =  "15800003658";
//一个括号代表一个组,("(\\d{3})\\d{4}(\\d{4})", "$1****$2")与下面的等价
tel = tel.replaceAll("(\\d{3})(\\d{4})(\\d{4})", "$1****$3");
System.out.println(tel); 
//15800003658-->158****3658
}
/*
* 查找,寻找
*/
public static void Function4(){
String str = "da jia hao, ming tian bu fang jia!";
String mat = "\\b[a-z]{3}\\b";
//将正则封装成对象。
Pattern p = Pattern.compile(mat);
//通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//使用匹配器对象对字符串进行操作
//查找
//find()返回的是boolean,是否发现了匹配值
//group()返回由以前匹配操作所匹配的输入子序列。
while(m.find()){
System.out.println(m.group());
//start()返回开始匹配的位置;end()结尾位置。
System.out.println(m.start()+":"+m.end());
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值