关于正则表达式的解释和使用方法以及案例分析




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


/*
 * 正则表达式:符合一定规则的表达式,
 * 作用:用于专门操作字符串
 * 特点:用于一些特定的符号来表示一些代码操作,这样就简化书写
 *  学习正则表达式就是在学习一些特殊的符号是使用
 * 好处:可以简化对字符串的复杂操作
 * 弊端:符号定义越多,正则越长,阅读性越差。
 * 具体操作功能:
 * 1:匹配:string matches方法,用规则匹配整个字符串,
 * 只要一处不符合规则,就匹配结束,返回false
 * 2:切割:string split ();
 * 3:替换:string replaceAll();
 * 4:获取:将字符串中的符合规则的子串取出
 * 规则:1:将正则表达式封装成对象;
 * 2:让正则对象和操作的字符串相关联
 * 3:关联后,获取正则匹配引擎
 * 4:通过引擎对符合规则的子串进行操作,比如取出
 */


public class RegecDemo {
public static void main(String[] args) {
splitdemo("zhangsan lisi wangwu", " +");
// splitdemo("d:\\123\\a.txt", " \\\\");//按照\\来切
splitdemo("erkktyqquizzo", " (.)\\1+");//按照叠词来切
/*组的使用
* (.)组的概念,为了可以让规则的结果能够重用,可以将规则封装成一个组。
* 使用()完成。组的出现都有编号,从1开始。想要使用已有的组可以通过\n
* (n就是组的编号)的形式来获取。分为几组可以查左括号,有几个左括号有几组
*/
String str="asdffjasdfj14234234";
replaceAllDemo(str, "\\d{5,}", "#");//将字符串中的数组替换成#键
String str1="adfjddfhjfhdjhqwisdddddadfjkafja";
replaceAllDemo(str1, "(.)\\1+", "&");//将叠词替换为&
replaceAllDemo(str1, "(.)\\1+", "$1");//将重叠的字符替换为单个字符
}
//正则获取
public static void  name() {
String str="ni hao ,wo shi zhang san";

//str="123456";
// String  reg="[1-9]\\d{4,14}";
String reg="\\b[a-z]{4}\\b";//查询连续四个字符的词组
//将规则封装成对象
Pattern p=Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象
Matcher m=p.matcher(str);
/*System.out.println(m.matches());


 * 其实string类中的matches方法,用的就是pattern和matcher对象来完成的。
 * 只不过被string的方法封装后,用起来较为简单,但是功能缺单一。
 */
/*boolean b=m.find();//将规则作用到字符串上,并进行符合规则的子串查找
System.out.println(b);
System.out.println(m.group());//用于获取匹配后结果
*/
while (m.find()) {
System.out.println(m.group());
System.out.println(m.start()+"...."+m.end());//分隔符的开始和结束
}
/*
 * 用于获取匹配后结果
 */
}
//正则替换
public static void replaceAllDemo(String str,String reg,String newstr) {

str=str.replaceAll(reg, newstr);
System.out.println(str);
}
//正则表达式的切割功能
public static void  splitdemo(String str,String reg) {
// String reg=" +";//表示多个空格
// String reg1="\\.";//正则表达式中.表示为任意一个字符使用\\.来转义一下才可以使用.来切割
String [] arr=str.split(reg);
System.out.println(arr.length);//显示arr的长度
for (String s : arr) {
System.out.println(s);
}
}
//正则表达式的解释
public static void demo() {
String str="a";
//表示bcd内的任意一个,[a-z]内的字符
String reg="[bcd][a-z]";
boolean b=str.matches(reg);
System.out.println(b);

}
//第二种使用正则表达式来检测qq号
/*
 * 需求:对QQ号码进行校验
 * 要求:5--15 位0不能开头,只能是数字
 */
public static void  checkqq1() {
String  qq="";
String  regex="[1-9][0-9]{4-14}";
boolean flag=qq.matches(regex);
if (flag) {
System.out.println(qq+"...is ok");
}else {
System.out.println(qq+"...号码错误...");
}
}
/*
 * 这种方法使用了string类中的方法,进行组合完成了需求,但是代码过于复杂
 */
public static void checkqq() {
String qq="12345";
int len=qq.length();
if (len>=5&&len<=15) {
if (!qq.startsWith("0")) {
try {
long l=Long.parseLong(qq);
System.out.println("qq:"+qq);
} catch (Exception e) {
System.out.println("出现非法字符");
}
/*char[] arr= qq.toCharArray();
boolean flag=true;
for (int i = 0; i < arr.length; i++) {
if (arr[i]>='0'&&arr[i]<='9') {
flag=false;
break;
}if (flag) {
System.out.println("qq:"+qq);
}else {
System.out.println("出现非法字符");
}

}*/
}else {
System.out.println("不可以0开头");
}
}
else {
System.out.println("长度错误");
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值