Java学习笔记21(String类补充:正则表达式)
正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章:
功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是邮箱,等等
示例:
"[0-9]{6,12}"匹配规则:6到12位的数字,比如123456789就是true,12345就是false
"1[3578][0-9]{9}"匹配规则:1开头,第二位是3578中的一个,后面九个任意数字,比如13345678912就是true
"a*b"匹配规则:在多个a或者0个a之后有一个b,b必须是最后一个字符,比如aaaaab就是true,abc就是false
String类中还有几个方法上篇没有提到,这里会用到
基础知识不再介绍,示例:
matches方法:
package demo;
public class RegexDemo {
public static void main(String[] args) {
//检查QQ号码,不能0开头,全数字,5位到10位
checkQQ();
//检查手机号,1开头,第二位是34578,共11位
checkTel();
}
public static void checkQQ(){
String QQ = "123456";
boolean b = QQ.matches("[1-9][\\d]{4,9}");
System.out.println(b);//true
}
public static void checkTel(){
String telNumber = "13312345678";
boolean b = telNumber.matches("1[34578][\\d]{9}");
System.out.println(b);//true
}
}
split方法:
package demo;
public class RedexDemo {
public static void main(String[] args) {
split_1();
split_2();
split_3();
}
public static void split_1(){
String str = "I love java";
String[] strArr = str.split(" +");
for (int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
//打印出:I love java
}
public static void split_2(){
String str = "10-12-45-78-62";
String[] strArr = str.split("-");
for (int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
//打印出:10 12 45 78 62
}
public static void split_3(){
String str = "192.168.160.1";
String[] strArr = str.split("\\.");
for (int i = 0; i < strArr.length; i++) {
System.out.println(strArr[i]);
}
//打印出:192 168 160 1
}
}
replaceAll方法:
package demo;
public class RedexDemo {
public static void main(String[] args) {
replaceAll_1();
}
public static void replaceAll_1(){
String str = "Hello666123Ilove789java";
String str1 = str.replaceAll("[\\d+]","#");
System.out.println(str1);
//输出:Hello######Ilove###java
String str2 = str.replaceAll("[\\d]+", "#");
System.out.println(str2);
//输出:Hello#Ilove#java
}
}
正则表达式练习:
package demo;
public class RedexDemo {
public static void main(String[] args) {
//检查邮箱地址
checkMail();
}
public static void checkMail(){
String email = "abc123@sina.com.cn";
boolean b = email.matches("[a-zA-Z0-9_]+@[0-9a-z]+(\\.[a-z]+)+");
System.out.println(b);//true
}
}
Java学习笔记21(String类补充:正则表达式)的更多相关文章
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- java学习笔记之String类
String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...
- java学习笔记5——String类常用方法
1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- 【原】Java学习笔记023 - 字符串缓冲区_正则表达式
package cn.temptation; import java.util.Arrays; public class Sample01 { public static void main(Stri ...
- Java学习笔记16---抽象类与接口的浅显理解
抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...
- 【原】Java学习笔记031 - 常用类
package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...
- 1.9(java学习笔记)object类及toString()与equals()方法
object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...
- Java学习笔记day06_自定义类_ArrayList
1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...
随机推荐
- 命令行保存指定目录文件的名字(可包含文件夹文字)到txt文本文件
Microsoft Visual Studio中配置OpenCV解决方案属性的时候, 需要将OpenCV的lib扩展名的库文件添加到属性的依赖列表里面,网上的有些人博客里面直接给出的会有问题(但大多数 ...
- Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数
1.首先下载deb包,比如:将其放在 /home/tools/ 根目录下: 2.进入到tools根目录下的终端,输入下面命令创建文件夹extract,并在extract文件夹下创建DEBIAN文件夹 ...
- Java深入 - MyBatis的经常用法
MyBatis我们这篇文章主要记录一些经常使用的操作方法.这样在开发和使用的过程中这篇文章能够当做工具书来使用. MyBatis的数据源配置 <bean id="dataSource& ...
- 浅谈MySQL中的查询优化
mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整 ...
- Redis的那些最常见面试问题
随笔:经过长达一周的奔波和面试,电话面试,回首今天终于成功的入职了,总共面试了大概10家公司,包括阿里,京东,IBM等等,京东技术过了,学历因为非统招就被pass了,阿里面了2次电话面试就没下文了,估 ...
- 机器学习 - pycharm, tensorflow集成篇
继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的 参考: http://blog.csdn.net/include1224/articl ...
- CoreJava逻辑思维-顺时针打印自定义矩阵
CoreJava逻辑思维-顺时针打印自定义矩阵 这两天回顾了一下刚入Java时的一些比较有意思的逻辑题,曾经也费劲脑汁的思考过的一些问题,比如百钱百鸡最简单的算法啦之类的,而今天博主想说的是一个循环打 ...
- 「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)
目录(技术文) 多关于索引,分为以下几点来讲解: 一.索引的概述(什么是索引,索引的优缺点) 二.索引的基本使用(创建索引) 三.索引的基本原理(面试重点) 四.索引的数据结构(B树,hash) 五. ...
- Vue-Methods中使用Filter
1.Vue中Filter声明方式 Vue中存在两种声明Filter过滤器的方式: 1.全局过滤器 Vue.filter('testFilter1',function(val){ console.log ...
- Android(Java) 字符串的常用操作,获取指定字符出现的次数,根据指定字符截取字符串
/*这是第100000份数据,要截取出100000*/ String s="这是第100000份数据"; String s1 = s.substring(s.indexOf(&qu ...