正则表达式:

符合一定规则的表达式,用于专门操作字符串。

对QQ号码进行校验,要求:5-11位,0不能开头,只能是数字。

 public class Demo{
public static void main(String[] args) {
String qq = "741603187";
String regex = "[1-9][0-9]{4,10}";
boolean flag = qq.matches(regex);
if(flag){
System.out.println("OK");
}
else{
System.out.println("X");
}
}
}

操作功能:

(1)匹配:String  matches()方法

  [abc]:a,b或c

  [^abc]:任何字符,除了a,b或c

  [a-zA-Z]:a到z或A到Z,包含两头

  .   任何字符

  \d   数字[0-9]

  \D   非数字[^0-9]

  \w 单词字符[a-zA-Z_0-9]数字、字母、下划线

  \W  非单词字符

  X?    X,一次或一次也没有

  X*    X,零次或多次

  X+    X,一次或多次

    X{n}   X,恰好n次

  X{n,}   X,至少n次

   X{n,m}   X,至少n次,但是不超过m次

(2)切割:String  split()方法

例:按照叠词完成切割:

为了可以让规则的结果被重用,可以将规则封装成一个组,用( )完成。组的出现都有编号,从1开始。想要使用已有的组可以通过\n(n就是组的编号)的形式来获取。

 public class Demo{
public static void main(String[] args) {
String s = "abcccdeffghhhhhi";
String regex = "(.)\\1+";
String[] arr = s.split(regex);
for(String str : arr){
System.out.println(str);
}
}
}

输出结果:

ab
de
g
i

(3)替换:String   replaceAll()方法

 public class Demo{
public static void main(String[] args) {
//将字符串中的数字替换成*
String s1 = "abcc12432ffg333hi42314";
String regex1 = "\\d{4,}";
myReplace(s1, regex1, "*"); //将字符串中重叠的字符替换成单个字母,如aaa->a
String s2 = "abcccdeefffffg";
String regex2 = "(.)\\1+";
myReplace(s2, regex2, "$1"); //$n,获取第n组中的内容 }
public static void myReplace(String str, String regex, String newStr){
str = str.replaceAll(regex, newStr);
System.out.println(str);
}
}

输出结果:

abcc*ffg333hi*
abcdefg

(4)获取:将字符串中符合规则的子串取出

步骤:将正则表达式封装成对象

   让正则表达式和要操作的字符串相关联

   关联后,获取正则匹配的引擎

   通过引擎对符合规则的子串进行操作,比如取出

 import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Demo{
public static void main(String[] args) {
String str = "jin tian xing qi ji";
String regex = "\\b[a-z]{4}\\b"; // \b单词边界 //将规则封装成对象
Pattern p = Pattern.compile(regex); //让正则对象和要作用的字符串相关联。获取匹配器对象
Matcher m = p.matcher(str); //讲规则作用在字符串上,并进行符合规则的子串查找
while(m.find()){
System.out.println(m.group());
}
}
}

输出结果:

tian
xing

例:

将下列字符串转成:大家早上好

将已有字符串变成另一个字符串,使用替换功能,可以先将 . 去掉,再将多个重复的内容变成单个内容

 public class Demo{
public static void main(String[] args) {
test();
}
public static void test(){
String s = "大大大...家家家家家家家..早早早...上上上上上上上..好好";
s = s.replaceAll("\\.+", "");
s = s.replaceAll("(.)\\1+", "$1");
System.out.println(s);
}
}

将ip地址进行地址段顺序排序:

按照字符串自然顺序,只要让它们每一段都是3位即可。

(1) 按照每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位

(2) 将每一段只保留3位。这样。所有的ip地址都是每一段3位

 import java.util.TreeSet;

 //import java.util.Arrays;

 public class Demo{
public static void main(String[] args) {
test();
}
public static void test(){
String ip = "192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";
//取一连串连续数字,并在数字前加00
ip = ip.replaceAll("(\\d+)", "00$1"); //将以0开头(没有或多个)的,并3个数字结尾的一连串数字,替换成后三个数字。如002->002, 0010->010, 00192->192
ip = ip.replaceAll("0*(\\d{3})", "$1"); String[] arr = ip.split(" ");
//Arrays.sort(arr);
TreeSet<String> ts = new TreeSet<String>();
for(String s : arr){
ts.add(s);
}
for(String s : ts){
System.out.println(s.replaceAll("0*(\\d+)", "$1"));
}
}
}

输出结果:

2.2.2.2
8.109.90.30
10.10.10.10
102.49.23.13
192.68.1.254

对邮件地址进行校验:

 public class Demo{
public static void main(String[] args) {
test();
}
public static void test(){
String mail = "abc12@sina.com.cn";
String regex = "\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,3}";
System.out.println(mail.matches(regex));
}
}

Java笔记(十)的更多相关文章

  1. Java笔记(十九)……多线程

    概述 进程: 是一个正在执行中的程序 每一个进程执行都有一个执行顺序,该执行顺序是一个执行路径,或者叫一个控制单元 线程: 就是进程中的一个独立的控制单元,线程在控制着进程的执行 一个进程中至少有一个 ...

  2. Java笔记(十八)……包

    概述 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称的是 包名.类名. 包也是一种封装形式. 访问权限 引用<The Complete Reference&g ...

  3. Java笔记(十五)……面向对象IV多态(polymorphism)

    概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...

  4. Java笔记(十四)……抽象类与接口

    抽象类概念 抽象定义: 抽象就是从多个事物中将共性的,本质的内容抽取出来. 例如:狼和狗共性都是犬科,犬科就是抽象出来的概念. 抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完成 ...

  5. Java笔记(十二)……类中各部分加载顺序及存放位置问题

    什么时候会加载类 使用到类中的内容时加载,三种情况: 创建对象:new StaticDemo(); 使用类中的静态成员:StaticCode.num = 9;  StaticCode.getNum() ...

  6. java笔记十:java中的反射

    Java中,反射是一种强大的工具.它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而 ...

  7. Java笔记(十六)……内部类

    内部类概述 内部类是将一个类定义在另一个类里面,对里面那个类就成为内部类(内部类,嵌套类). 当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物在使用外部事物的内容 访问特点 内部类 ...

  8. Java笔记(十)……面向对象II封装(Encapsulation)

    封装概念 封装: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: 将变化隔离. 便于使用. 提高重用性. 提高安全性. 封装原则: 将不需要对外提供的内容都隐藏起来. 把属性都隐藏,提 ...

  9. java jvm学习笔记十(策略和保护域)

    欢迎转载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8271415 前面一节,我们做了一个简单的实验,来说明什么是策略文件,在文章的最后,也 ...

  10. python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

随机推荐

  1. electron 缓存目录 禁用缓存

    C:\Users\Administrator\AppData\Roaming\linksame // 禁用缓存 app.commandLine.appendSwitch("--disable ...

  2. 笔记12 export to excel (NPOI)

    1:filestream 熟悉关于文件操作 ==>fs.Seek(0, SeekOrigin.Begin);//每次打开文件, ==>若果重写覆盖的话,必须先清空 fs.SetLength ...

  3. AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4 源代码包-下载/配置/编译/刷机)

    AOSP ON MAKO(在NEXUS 4上刷ANDROID 4.4 源代码包-下载/配置/编译/刷机) 特别感谢google官方文档及AOSP源代码开放 參考链接: https://source.a ...

  4. caffe搭建以及初步学习--win7-vs2013-gtx650tiboost-cuda8.0-cifar10训练和测试-2-完整解决方案cifar10_full_solver.prototxt

    首先总结前一节的内容. 简单的讲,就是训练并测试了快速解决方案. 转换数据格式: convert_cifar_data.exe data/cifar10 examples/cifar10 lmdb 计 ...

  5. 图像处理之opencv---常用函数

    http://blog.sina.com.cn/s/blog_9c3fc0730100yzwt.html 很全 http://www.xuebuyuan.com/593449.html cvrepea ...

  6. iOS开发 如何检查内存泄漏

    本文转载至 http://mobile.51cto.com/iphone-423391.htm 在开发的时候内存泄漏是不可避免的,但是也是我们需要尽量减少的,因为内存泄漏可能会很大程度的影响程序的稳定 ...

  7. [ios]objective-c中Category类别(扩展类)专题总结

    本文转载至 http://yul100887.blog.163.com/blog/static/20033613520126333344127/   objective-c类别的作用?通过类别的方式, ...

  8. 九度OJ 1126:打印极值点下标 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4613 解决:1646 题目描述: 在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称为该整 ...

  9. Transforming Auto-encoders

    http://www.cs.toronto.edu/~hinton/absps/transauto6.pdf The artificial neural networks that are used ...

  10. file descriptor 0 1 2 一切皆文件 stdout stderr stdin /dev/null 沉默是金 pipes

    $>emtry_or_create_a_file.f $ll>>append_a_file.f standard output input error $ls -l /usr/bin ...