首先一个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. perl 爬取同花顺数据

    use LWP::UserAgent; use utf8; use DBI; $user="root"; $passwd='xxx'; $dbh=""; $db ...

  2. tpopela/vips_java

    tpopela/vips_java Implementation of Vision Based Page Segmentation algorithm in Java

  3. Delegation事情委托或代理

    在javasript中delegate这个词经常出现,看字面的意思,代理.委托.那么它究竟在什么样的情况下使用?它的原理又是什么?在各种框架中,也经常能看到delegate相关的接口.这些接口又有什么 ...

  4. flexbox 伸缩布局盒

    Flexbox(伸缩布局盒) 是 CSS3 中一个新的布局模式,为了现代网络中更为复杂的网页需求而设计. Flexbox 由 伸缩容器 和 伸缩项目 组成.通过设置元素的 display 属性为   ...

  5. webservice主流框架Axis、Axis2、XFire、CXF的比较

    http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...

  6. ajax 上传图片 并预览

     <img {if !$article[pic]}style="display: none"{/if} width="82" height="6 ...

  7. myeclipse优化设置

    一.myeclipse字体设置Window->Preferences->General->Appearance->Colors and Fonts在右侧找到”Aa Test F ...

  8. mysql 本机root密码忘记

    1.找到对应的my.conf,在mysqld节点添加:skip-grant-tables  2.重启mysql 即可无密登录 3.update user表中的密码后,去除skip-grant-tabl ...

  9. load_library(linker.cpp:759): library "libmaliinstr.so" not found

    1.02-07 15:19:09.277: E/linker(16043): load_library(linker.cpp:759): library "libmaliinstr.so&q ...

  10. 8.PHP 教程_PHP字符串

    字符串变量用于存储并处理文本. PHP中的字符串变量 字符串变量用于包含有字符的值. 在创建字符串之后,我们就可以对它进行操作了.您可以直接在函数中使用字符串,或者把它存储在变量中. 在下面的实例中, ...