博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式及例子,很实用的东西
阅读量:5927 次
发布时间:2019-06-19

本文共 3071 字,大约阅读时间需要 10 分钟。

正则表达式

一.概念

是指一个用来描述或者匹配一系列符合某个规则的字符串的单个字符串,其实就是一种规则,有自己特殊的应用;

作用:比如注册邮箱,邮箱有账号和密码,一般会对其限制长度,这个限制长度的事情,就是正则表达式做的

:检验QQ号码:

 *1.要求必须是5-15位的数字

 *2.要求不能以0开头

 *3.要求全是数字组成

 

方法一:使用非正则表达式完成

public class Demo18 {

public static void main(String[] args){

System.out.println(CheckQQ("12312321312"));

}

public static boolean CheckQQ(String qq){

boolean flag = true;

if(qq.length()>=5&&qq.length()<=15){ //判断是否是5-15个数字

之间

if(!qq.startsWith("0")){ //判断是否以"0"开头

char arr[] = qq.toCharArray(); //字符串转字符数组

for (int i = 0; i < arr.length; i++) {

if(arr[i]>='0'&&arr[i]<='9'){ //判断是否是0-9数 字组成

break;

}else{

flag = false;

break;

}

 

}

}else{

flag = false;

}

}else{

flag = false;

}

return flag;

}

方法二:使用正则表达式

public static void main(String[] args){

 

String regex="[1-9]\\d{4,14}";//[1-9]表示第一位,\\d表示0-9的字 ,{4,14}表示0-9出现的次数为4-14次

System.out.print("12312312".matches(regex));//"12312312".matches(reg ex)检测是否匹配规则,并返回比尔类型的值

}

字符类

[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 次

 

 

二.正则表示式分割字符串

:

public class Demo_split {

public static void main(String[] args){

String str="金三胖 郭美美 李dayone";

String[] arr = str.split(" ");  //正则表达式切割并保存到String字符 串数组中

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

}

 

 

:我有字符串”91 27 46 38 50”,请写出代码实现最终功能:”27 38 46 50 91”

public static void main(String[] args){

String str = "91 27 46 38 50";

//1.先分割成字符,并存储到数组中

String[] sArr = str.split(" ");

//2.定义一个int数组,与sArr等长

int[] arr = new int[sArr.length];

//3.将字符数组转换成数字数组,并储存到arr

for (int i = 0; i < arr.length; i++) {

arr[i]=Integer.parseInt(sArr[i]);

}

//4.将int数组进行排序

Arrays.sort(arr);

//将 转换后的int数组转换成String类型的字符串

StringBuilder a = new StringBuilder();

for (int i = 0; i < arr.length; i++) {

if(i==arr.length-1){

a.append(arr[i]);

}else{

a.append(arr[i]+" ");

}

}

System.out.println(a.toString());

 

}

.正则表达式替换功能

replaceAll(String regex,String replacement)

String str = “wo1aihei2ma”;

String regex = “\\d”;  // \\d表示任意数字

String str2 = str.replaceAll(regex,””);

.正则表达式的分组功能

:

....我...我.我...要....要...要.要...学....学...学.学...编....编...编....编...程.程...程.程...

将字符串还原成:我要学编程

String str = "我....我...我.我...要....要...要.要...学....学...学.学...编....编...编....编...程.程...程.程...";

//第一次进行替换,替换所有的.,\\.表示".","+"表示出现1次或者多次

String str1 = str.replaceAll("\\.+","");

System.out.println(str1);

//第二次进行替换,先将原字符串分组,(.)表示分组,"."表示任意字符,"\\1+"表示出现一次或者多次,"$1"表示拿到每组的第一个字符

String str2 = str1.replaceAll("(.)\\1+", "$1");

System.out.println(str2);

.正则表达式的获取功能

例:

String str = "我现在的手机号码是15999107721,以前用过18841847521,还用过13550836011";

String regex = "1[358]\\d{9}";

Pattern p = Pattern.compile(regex);

Matcher m=p.matcher(str);

while(m.find())

System.out.println(m.group());

 

 

转载地址:http://rqevx.baihongyu.com/

你可能感兴趣的文章
Android的onCreateOptionsMenu()创建菜单Menu详解(转)
查看>>
使用HtmlAgilityPack抓取网页数据
查看>>
郭培_百度百科
查看>>
Spring3数据库事务管理机制
查看>>
ps 命令使用总结
查看>>
java环境变量配置(转)
查看>>
Eclipse Kepler SR2 + Python 3.4 + JDK7+Pydev3.4 搭建 python 开发环境(MAC)
查看>>
JavaScript学习05 定时器
查看>>
Android中Style和Theme的使用
查看>>
西服定制_男装定制_礼服定制【乐裁】专业首选的全国西服定制商城
查看>>
文件夹操作
查看>>
【Android Demo】通过WebService获取今日天气情况
查看>>
linux 下手动编译安装无线网卡驱动
查看>>
【struts2】OGNL
查看>>
Posix-linux_route
查看>>
[转]微信公众平台WeChat PHP SDK
查看>>
使用spring rest插入数据库时发生了 前言中不允许有内容 错误
查看>>
Struts2中文件下载
查看>>
关于UIScrollView有些你很难知晓的崩溃情形
查看>>
C语言各种存储模式的区别?最常用的存储模式有哪些?
查看>>