Regex阅读笔记(五)java操作篇

首先一个demo程序

Java的正则表达式包为java.util.regex,主要是使用其中的Pattern和Matcher.

groupCount方法时候都可调用,而大多数方法都必须在匹配尝试成功之后才可调用.

主要的方法有:

boolean find()

返回的boolean值表示是否能找到匹配,如果有多次调用,每次都在上次的匹配位置之后尝试新的匹配.

public class Regex {
    public static void main(String[] args){
        String regex = "\\w+";
        Pattern pattern = Pattern.compile(regex);
        String str = "this is my";
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()){
            String matchedText = matcher.group();
            int matchedFrom = matcher.start();
            int matchedTo = matcher.end();
            System.out.println(matchedFrom+" "+matchedTo);
            System.out.println(matchedText);
        }

boolean find(int offset)

如果指定了整型参数,匹配尝试会从距离目标字符串开头offset个字符的位置开始,如果超出会报错,这种形式的find不会受当前检索范围的影响.

boolean matches()

返回正则表达式是否能完全匹配目标字符串中检索范围的那段文本.

boolean lookingAt()

返回正则表达式能否在当前目标字符串的当前检索范围中找到匹配.

group()

返回前一次应用正则表达式的匹配文本.

groupCount()

返回捕获型括号的数目

group(int num)

返回对应捕获型括号匹配的内容,group(0)就等于group()

输出分别是:

this is
2
this
is

int start(int num)

返回编号为num的捕获型括号所匹配文本的起点在目标字符串中的绝对偏移值.

int start()

返回整个匹配起点的绝对便宜值,就相当于start(0)

int end 与 int end(int num)对应于start

时间: 2024-10-17 23:49:15

Regex阅读笔记(五)java操作篇的相关文章

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

《软件需求十步走》阅读笔记五

本次阅读笔记写一下本书的第六篇<管理篇>. 第六篇共分为四章,分别是需求管理的思路.需求版本控制.管理变更请求.需求跟踪能力. 首先是第一章<需求管理的思路>. 需求管理活动的目标就是确保需求业务活动能够按照进度要求.质量要求.成本要求生产出高质量的由业务需求.用户需求和系统需求构成的软件需求规格说明.需求管理工作具体是借助由基线.版本.状态.变更.跟踪构成的需求约定这一抓手将需求业务活动集成起来并加以规范化.需求管理活动的目的是在客户与软件开发人员之间建立一个由文档构成的需求基线

jdk源码阅读笔记之java集合框架(一)(基础篇)

结合<jdk源码>与<thinking in java>,对java集合框架做一些简要分析(本着实用主义,精简主义,遂只会挑出个人认为是高潮的部分). 先上一张java集合框架的简图: 会从以下几个方面来进行分析: java 数组; ArrayList,LinkedList与Vector; HashMap; HashSet 关于数组array: 数组的解释是:存储固定大小的同类型元素.由于是"固定大小",所以对于未知数目的元素存储就显得力不从心,遂有了集合.

Java基础学习笔记五 Java基础语法之面向对象

面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生(擦玻璃.扫地.拖地.倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了.面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了.例如,公司打扫

《架构之美》阅读笔记五

一个好的架构的形成不仅是架构师的功劳,还有团队的集体合作,主要因素:确实进行有意为之的前端设计:设计者有很好的素质和经验:在开发过程中,保持清晰的设计观点:授权团队负责软件的整体设计:不要害怕改变设计:让合适的人加入到团队中,让团队保持健康的工作关系:在合适的时候做出决定:好的项目管理和合适的最后期限. 在后来介绍架构伸缩性的时候以常见的在线游戏的设计为例,这类软件对系统的伸缩性要求很高,要能实时伸缩,减少延时.随即提出了两种解决方案:分区和基于地理位置,每个地理区域的玩家运行在一台服务器上.

架构之美阅读笔记五

第十一章解释了一组非常简单的组件和一门扩展语言如何将一个不起眼的文本编辑器编程了一个操作系统,成为程序员工具箱中的瑞士军刀:第十二章展示了冲刺和统计评审这样的社区过程如何帮助软件架构从简单的骨架演变为美丽的系统. 第十一章为我们展示了GNU Emacs的故事:滋长的特性是其优势.首先我认识到了Emacs是什么.它和我们经常使用的其他文本编辑器类似,当我们用Emacs打开一个文件时,将弹出一个窗口,并显示出该文件的内容,我们可以对其内容进行修改,然后保存这些修改后退出.Emacs架构所采用的是在交

jdk源码阅读笔记之java集合框架(四)(LinkedList)

关于LinkedList的分析,会从且仅从其添加(add)方法入手. 因为上一篇已经分析过ArrayList,相似的地方就不再叙述,关注点在LinkedList的特点. 属性: /** *链表头 */ transient Node<E> first; /** * 链表尾 */ transient Node<E> last; 从以上两个属性可以得出LinkedList是基于双向链表实现的. 节点代码(无需过多解释): private static class Node<E>

《你的灯亮着吗》阅读笔记之第三篇与第四篇

我们平时解决某个问题的时候,是不是也遇到过,用某个方法解决完问题后,是不是又会出现新的问题,新的问题得到解决后是不是又出现了更新的问题,不知道你有没有遇到过,反正我是遇到过,尤其是在敲代码写软件的时候,当你想解决某个输出问题时候,想用某一个控件解决了这个输出问题,但是这个控件放上来后,控件的属性,用法问题又会出现在你的面前,不知道举这个例子是不是很合适啊,权且算是合适吧. 当我们遇到这样问题的时候我们是怎么解决的呢?我们是不是忽视了一些什么?我们有没有回头看看?书中说道:“如果在你对问题的理解中

SQL查询初学者指南读书笔记(五)集合操作与多表查询介绍

PART III:Thinking in Sets CHAPTER7 Thinking in Sets The three mostcommon set operations are as follows. Intersection Difference Union 在SQL中相应的关键词分别是 Intersection Except Union 实际数据库实现一般支持以下相应的数据库集合操作 INNER JOIN OUTER JOIN UNION JOIN 不过其区别是前者集合操作涉及表中所有