首先一个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

replace示例:

String myText = "Before Java 1.5 was Java 1.4.2 After Java 1.5 is Java 1.6";
String myRegex = "\\bJava\\s*1\\.([56])\\b";
Pattern p = Pattern.compile(myRegex);
Matcher m = p.matcher(myText);
System.out.println(m.replaceAll("Java $1.0"));

如果只需要替换第一次出现的文本,可以使用replaceFirsr而不是replaceAll.此外明确知道目标字符串只存在一个匹配时,使用replacrFirst可以提高 效率.

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

  1. 云时代架构阅读笔记五——Java内存模型详解(一)

    什么是Java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致 ...

  2. 云时代架构阅读笔记六——Java内存模型详解(二)

    承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...

  3. 2 - 基于ELK的ElasticSearch 7.8.x技术整理 - java操作篇 - 更新完毕

    3.java操作ES篇 3.1.摸索java链接ES的流程 自行创建一个maven项目 3.1.1.依赖管理 点击查看代码 <properties> <ES-version>7 ...

  4. 云时代架构阅读笔记二——Java性能优化(二)

    承接上文Java性能优化(一)https://www.cnblogs.com/guo-xu/p/11019267.html 4)尽量确定StringBuffer的容量 在说和这个标题相关之前,先说一下 ...

  5. Java学习笔记五:Java中常用的运算符

    Java中常用的运算符 运算符是一种“功能”符号,用以通知 Java 进行相关的运算.譬如,我们需要将变量 score 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作. Java ...

  6. 【阅读笔记】Java核心技术卷一 #6.Chapter8

    8 泛型程序设计 8.1 为什么要使用泛型程序设计 类型参数(type parameters)(E.T.S...) 通配符类型(wildcard type)(?) 注意这两者用法用处并不同. 8.2 ...

  7. 【阅读笔记】Java核心技术卷一 #0

    这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...

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

    面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生( ...

  9. Java 学习笔记 (五) Java Compile\Build\Make的区别

    以下内容引自: http://blog.51cto.com/lavasoft/436216 Compile.Make和Build的区别 原创leizhimin2010-11-30 11:30:20评论 ...

随机推荐

  1. 男装电子零售商East Dane即将面世_衣装_YOKA时尚网

    男装电子零售商East Dane即将面世_衣装_YOKA时尚网 男装电子零售商East Dane即将面世

  2. 配置vim之插件

    涉及linux平台下ctags, taglist插件 ctags是一个用于产生代码索引文件的插件,它产生的索引可以帮助我们更快的定位到特定位置. ctags支持很多语言,比如java, c, c++, ...

  3. js 触摸事件

    js触摸事件 应用在移动端 webkit内核都支持. 触摸事件api https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html 事件 ...

  4. javascript的函数相关属性和方法

    作为一名前端初学者,应该坚持每天去学习,去总结 ,去复习,去接触更新鲜的事物.但是这段时间很浮躁,虽说也是在一直学习,自己能吸收的少之又少.今日在这突然冒出来,实感惭愧. 1.函数名.name 获得函 ...

  5. WPF之DataGrid应用(转)

    原文:http://blog.csdn.net/sanjiawan/article/details/6785394 前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功 ...

  6. C++ 字符串指针与字符串数组

    在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前 ...

  7. php制作数据字典

    /** * 生成mysql数据字典 */ header("Content-type:text/html;charset=utf-8"); // 配置数据库 $database = ...

  8. HTML+CSS笔记 CSS进阶再续

    CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...

  9. mybatis字段名与类属性名不相同的冲突

    新建一个表 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no ), order_price FLOAT ); ...

  10. FPGA工程中用C语言对文件进行处理_生成mif文件

    本博客中有用verilog处理文件数据的代码,本博文采用C 处理文件中的数据. 有时候要生成一个mif文件—— altera memory  initial file.本次工程中我得到的是一个大型的数 ...