关于正则表达式的简单使用

正则表达式

简介

什么是正则表达式?
正则表达式由字符和特殊符号组成的一种字符串,通常用于匹配和查询,有三种基本操作
1.连接
2.或
3.闭包

正则表达式可以做什么?
电话号码或者邮箱等进行匹配,可以使用正则表达式来完成,在文章中寻找想要的关键词,也可以使用正则表达式来完成。

实例

编写一个正则表达式来分辨手机号的运营商

手机号码的长度为11位

(旧版)
移动: 134,135,136,137,138,139,150,151,157,158,159,182,187,188
联通: 130,131,132,152,155,156,185,186
电信: 133,1349,153,180,189

移动正则表达式:^1(3[4-9]|5[0-1|7-9]|8[2|7-8]\d)\d{8}$
解释下思路,手机号码假设为一串字符串,1是肯定会有的,如果出现其他的数字开头,说明这个号码就不是手机号了,3,5,8,是三家服务商共有的号码,所以提出来,接着第三位号码决定手机号码的服务商了,移动的3是以{4,5,6,7,8,9}, 所以可以写成[4-9], 表示4-9的子集,其他以此类推。

下面是Java写法,regex包是SE7的,所以版本低于JDK1.7就不能使用regex包。

import java.util.Scanner;
import java.util.regex.*;
public class ReNumber {
public static void main(String[]args){
    Scanner scanner =  new Scanner(System.in);
    String input = scanner.next();
    String CMCC = ".*^1(3[4-9]|5[0-1|7-9]|8[2|7-8]\\d)\\d{8}$.*";
    boolean isCMCC = Pattern.matches(CMCC, input);
      if (isCMCC)
      {
          System.out.println("中国移动");
      }
}

结语

这次的正则表达式没有写好,没有静下来心来,完全写透,先这样凑合着看吧。

#Java#
全部评论
这个玩意虽然复杂的很,但是拿来写笔试算法题真是美滋滋。。
点赞 回复 分享
发布于 2018-12-10 21:17
有不同实现,但是是指数时间复杂度。实际怎么写的我不太确定,但是应该是回溯。所以才有灾难性回溯的问题。正则它。。。有好有坏
点赞 回复 分享
发布于 2018-12-10 22:17

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务