java学习笔记——正则表达式
NO | 方法名称 | 类型 | 描述 |
1 | public boolean matches(String regex) | 普通 | 正则验证使用 |
2 |
public String replaceAll(String regex,String replacement) |
普通 | 全部替换 |
3 |
public String replaceFirst(String regex,String replacement) |
普通 | 替换首个 |
4 | public String[] split(String regex) | 普通 | 全部拆分 |
5 |
public String[] split(String regex,int limit) |
普通 | 部分拆分 |
正则符号(所有的正则匹配符号否在Java.util.regex.Pattern;中提供):
1.表示单个字符(每出现一个表示一位):
- x:表示由x组成;
- \\:表示转移字符"\"
- \t:表示制表符,\n表示换行
2.表示字符的选用范围(每出现一个表示一位):
- [abc]:表示可能是a b c 中的任意一个(注意:只能匹配一个字符);
public class demo1 { public static void main(String[] args) {
// TODO Auto-generated method stub
String str="a";
System.out.println(str.matches("[abc]"));
} }public class demo1 { public static void main(String[] args) {
// TODO Auto-generated method stub
String str="ab";
System.out.println(str.matches("[abc][abc]"));
} }[^abc]:表示 任何字符,除了 a、b 或 c(否定)
[a-zA-Z]:a 到 z 或 A 到 Z,两头的字母包括在内(范围)
- [0-9]:
3.简化表达式(每出现一个表示一位):
- .:表示任意一位字符;
- \d:表示任意一位数字,相当于[0--9];
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="2";
System.out.println(str.matches("\\d"));
}
}- \D:表示不是一个数字,相当于[^0--9];
- \s:表示任意一位空格;
public class demo1 { public static void main(String[] args) {
// TODO Auto-generated method stub
String str="\t";
System.out.println(str.matches("\\s"));
}
}- \S:表示不是任意的一位空格;
- \w:表示字母(包括大写或小写) 数字 下划线中的任意一位;
4.边界匹配:
- ^:写在正则之前,表示正则开始;
- $:写在正则最后,表示正则结束;
5.数字规范:
- ?:表示正则规范只能出现0次或者1次;
public class demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="";
System.out.println(str.matches("\\d?"));
String str1="22";
System.out.println(str1.matches("\\d?"));
}
}- *:表示出现0次 1次 或者多次;
- +:表示正则出现1次 或者多次;
- {n}:表示此正则正好出现n次;
- {n,}:表示此正则出现n次及n次以上;
- {n,m}:表示此正则出现n~m次;
6.逻辑表达式:
- 正则X正则Y:执行正则X后执行正则Y;
- X|Y:满足正则X或者正则Y其中一个即可;
- (正则):表示多个正则成为一组;
7.通过String类操作字符:
- 如:只保留字母
public class demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="afajhj2313535{}]gaj>?';f'afag;lag";
String regex="[^a-zA-Z]";
System.out.println(str.replaceAll(regex, ""));
}
}- 替换(利用split()函数)
public class demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="a1b22c333d4444e55555f666666g";
String regex="\\d+";
String [] res=str.split(regex);
for(int i=0;i<res.length;i++)
System.out.println(res[i]);
}
}- 用户名有字母 数字 下划线表示并且有6~15个字符;
public class demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="wangxiang_123*";
String regex="\\w{6,15}";
System.out.println(str.matches(regex));
String regex1="(\\d|[a-zA-Z]|_|\\*){6,15}";
System.out.println(str.matches(regex1));
}
}- 现在某学校的学生成绩那照"姓名:年龄:生日:成绩"格式,这样的数据可以出现多次并以|分隔, 如:ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5
- 下面对各个判断进行拆分:
- 名字:
String str="zhansan";
String regex="[a-zA-Z]+";- 年龄:
String str="19";
String regex="\\d{1,3}";- 生日:
String str="1993-09-02";
String regex="\\d{4}-\\d{2}-\\d{2}";- 成绩:
String str="98.98";
String regex="\\d{1,3}(\\.\\d{1,2})?";- 单个学生格式综合:
String str="ALLEN:19:1993-05-02:98.6";
String regex="[a-zA-Z]+:\\d{1,3}:\\d{4}-\\d{2}-\\d{2}:\\d{1,3}(\\.\\d{1,2})?";- 整个判断:
public class demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5";
String regex="([a-zA-Z]+:\\d{1,3}:\\d{4}-\\d{2}-\\d{2}:\\d{1,3}(\\.\\d{1,2})?\\|?)+";
System.out.println(str.matches(regex));
}
}
java学习笔记——正则表达式的更多相关文章
- JAVA学习笔记--正则表达式
正则表达式是一种强大而灵活的文本处理工具.使用正则表达式,可以让我们以编程的方式构造复杂的文本,并对输入的字符串进行搜索. 一.基础正则表达式语法(表格来自J2SE6_API) 字符 x 字符 x \ ...
- Java 学习笔记 正则表达式
2019.3.27 正则表达式 \w 单词字符,匹配[]a-zA-Z_0-9] \w{3} 表示匹配3个字符()ab8,abc,a_c,a5_...) \w+ 至少一个,1到多个 \w* 0个到n个 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记06--正则表达式
java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...
- 20155234 2610-2017-2第九周《Java学习笔记》学习总结
20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...
- Java学习笔记之---API的应用
Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...
- Java学习笔记【一、环境搭建】
今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
随机推荐
- angular控制器controller里获取不到ng-model的值,获取为undefined
所遇问题: html:ng-model=“test”, 但是在controller里打印的$scope属性里面并未发现test,控制台打印test为undefined,页面上{{test}}却可以正常 ...
- 适配器模式 & 装饰器模式
一.适配器模式:简单来讲,就是为了方便使用,完成从 一个接口 到 另一个接口 的 转换,这个负责转换的就是 适配器例如:Reader ——> InputStreamReader 通过类内部组合 ...
- xCode中去除“Implicit declaration of function 'sysctl' is invalid in C99” 警告
http://blog.csdn.net/dreambegin/article/details/8609121 一般出现该问题是因为通过C调用了unix/linux 底层接口,所以需要调整c语言的编译 ...
- VMWare虚拟机如何与主机共享文件夹(最容易看懂的讲解)附图~
http://wenku.baidu.com/view/54ab9e19227916888486d776.html 新建好虚拟机并安装好系统后,在编辑虚拟机设置--选项进行以下设置: 点添加 选择你要 ...
- ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端
昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1. ...
- 免格式化制作老毛桃PE工具
由于移动硬盘数据很多,格式化制作太麻烦 先去老毛桃官网下载PE,生成ISO文件 将移动硬盘单独划分一个2G的空间用于装老毛桃,并格式化为FAT32格式,这样就避免全盘格式化了,只需要格式化这个分区 ...
- appium+python自动化24-滑动方法封装(swipe)【转载】
swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. swipe(self, ...
- laravel按月/时间区间查询数据
public function payRollList($time) { $member_phone = Session::get(phone'); $engineer = Engineer::get ...
- Visual Studio跨平台开发(1):Hello Xamarin!
前言 应用程序发展的脚步, 从来没有停过. 从早期的Windows 应用程序, 到网络时代的web 应用程序, 再到近几年相当盛行的行动装置应用程序(Mobile Application), 身为C# ...
- AC日记——斐波那契数列 洛谷 P1962
斐波那契数列 思路: 矩阵快速幂: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> ...