《疯狂Java讲义》(二十二)---- 正则表达式

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaab");
boolean b = m.matches(); //b = true

Pattern对象可以多次重复使用。如果某个正则表达式仅需使用一次,则可以直接使用pattern类的静态matches方法:

boolean b = Pattern.matches("a*b", "aaaab");

Pattern是不可变类,可供多个并发线程安全使用。

Matcher类例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindGroupDemo {

    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\w+").matcher("Java is very easy");
        while(m.find()) {
            System.out.println(m.group());
        }
        int i = 0;
        while(m.find(i)) {
            System.out.print(m.group() + "\t");
            i++;
        }
    }
}

find()方法一次查找字符串中与Pattern匹配的子串,一旦找到对应的子串,下次调用find()方法时将接着向下查找。除此之外,find()还可以穿入int类型的参数,find()方法会从该int索引处向下搜索。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StartEndDemo {

    public static void main(String[] args) {
        String regStr = "Java is very easy!";
        System.out.println("target string : " + regStr);
        Matcher m = Pattern.compile("\\w+").matcher(regStr);
        while(m.find()) {
            System.out.println(m.group() + " start : " + m.start() + " ,end : " + m.end());
        }

    }

}

start和end方法主要用于确定子串在目标字符串中的位置

时间: 2024-07-30 10:19:48

《疯狂Java讲义》(二十二)---- 正则表达式的相关文章

疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程java任务timerstring 2009-01-16 21:12 6722人阅读 评论(0) 收藏 举报  分类: J2SE(63)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天讲了Swing基本的控件,今天开始讲特殊控件.一天讲2个吧,首先讲用JProgressBar,Pro

《疯狂Java讲义》(二十七)----泛型

菱形语法 List<String> strList = new ArrayList<String>(); Java7 后允许在构造器后不需要带完整的泛型信息,只要给出一对尖括号即可. List<String> strList = new ArrayList<>(); 泛型接口/类 可以为任何类/接口增加泛型声明 class Apple<T> { private T info; public Apple() { } public Apple(T i

疯狂JAVA讲义---第十五章:输入输出(上)流的处理和文件

在Java中,把这些不同类型的输入.输出抽象为流(Stream),而其中输入或输出的数据称为数据流(Data Stream),用统一的接口来表示,从而使程序设计简单明了. 首先我要声明下:所谓的输入输出都是相对内存而言的 还要讲几个基本概念:字节流和字符流,字节流8位,主要由InputStream和OutputStream来处理.字符流16位,主要由Reader和Writer来处理. 节点流和处理流,磁盘或网络等读写的数据的流为节点流,对节点流进行封装和处理的流叫处理流. InputStream

疯狂Java讲义(十四)---- 抽象类和接口

抽象类 抽象方法和抽象类必须使用abstract修饰符定义,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法.抽象类不能被实例化. 接口 接口只是一种规范,定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里的实现细节,它只规定这些类必须提供某些方法.接口体现的是规范和实现分离的设计哲学. 接口语法: 修饰符可以是public或省略,如果省略修饰符,默认采用包权限访问控制符.所以一般都是public.因为接口是多个类共同的公共行为规范,因此接口里的所有成员都

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

Java Web总结二十二投票系统

投票系统需求: (1)查询所有候选人基本信息 (2)查询某位候选人详细信息 (3)投票人登录和退出 (4)投票人限制1分钟之内重复投票 (5)投票人IP和最后投票时间查询 (6)阻止相同用户名二次在线登录 (7)票数条形显示和候选人头像处理 (8)显示投票人归属地 (9)热门候选人,即投票数最多 (10)后台管理员登录 可选需求: (11)查询.删除.更新.增加候选人详细信息 (12)与一个Listener,创建所有表格式和初始化数据 代码参见:day19/vote(此处不上传) Java We

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

《疯狂Java讲义》(三十五)---- 网络编程

Java网络通信非常简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信. IP地址用于唯一地标识网络中的一个通信实体.端口用于表示数据交给哪个通信程序处理. 公认端口从0到1023,紧密绑定一些特定的服务.注册端口从1024到49151,应用程序通常应该使用这个范围的端口.动态端口从49152到65535,是应用程序使用的动态端口,应用程序一般不会主动使用这些端口. package com.ivy.net; import

Java读书笔记十二(Java中的代码块)

前言 我们知道在java中通过构造器来为对象进行初始化操作,但是在java中与构造器类似的还有初始化块的操作,下面小编来为大家分享一下. 初始化块使用 在Java中初始化块是java中出现的第4中成员,前三种分别是成员变量.方法和构造器.一个类中可以有多个初始化块,并且相同类型的初始化块是按照顺序依次执行的.初始化块的修饰符只能是static,初始化块可以包含任何可执行语句,包括定义局部变量.调用其他对象方法,以及使用分支.循环语句等 /** * @FileName: test.java * @