要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对“()”分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次匹配中你更关心的部分.捕获组可以通过从左到右计算其开括号来编号.例如,在表达式 "(x)(y\\w*)(z)" 中,存在三个这样的组:  1.  x2.  y\\w*3.  z组零始终代表整个表达式.之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列.捕获的子序列稍后可以通过 Bac…
今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同时也希望有大神和细心的学习者找到我理解中出现的问题. 什么是捕获组 我们先看一下PHP的正则匹配函数 int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags =…
关于 Java正则表达式中的Possessive数量修饰词的理解 正则表达式对于数量限定符如 ?, + , *, {n, m} 的匹配默认是贪婪模式,比如: a.*b   匹配 acbab 的结果是 acbab 而不是acb 正则表达式支持懒惰模式,也就是在数量限定符后加一个数量修饰词(quantifier),用问号表示, 比如: a.*?b 匹配 acbab 的结果是 acb 而不是acbab   而Java语言在正则表达式中支持一种Possessive 数量修饰词 ,用加号表示.其字面意思是…
1. 核心概念与相关API(Service API) 1.1. 概念:Process definition, process instance ,  execution 1.1.1. Process definition ProcessDefinition,流程定义: 一个流程的步骤说明.如一个请假流程.报销流程.借款流程等,是一个规则. 例: 1.1.2. Process instance ProcessInstance,流程实例: 代表流程定义的一次执行.如张三昨天按请假流程请了一次假.一个…
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉. 这句话怎么理解,最简单的看下图,也就是不能在Runnable的run方法上抛出异常,必须在里面捕获. 这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束.但是线程依然有可能抛出unchec…
原来正则表达式中的"."代表的是除换行以外的任意字符,如果要真正代表任意字符,需要把换行符也加进去,但是经过测试"[.\\n]"不生效,可以使用"\\s\\S"代表,即所有空字符+所有非空字符. 注:为了适用于java程序,上述表达式已把斜杠替换成双斜杠.…
有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ ..... 可能这个问题对于初学者来说比较头疼,但是只要别人一点可能就明白了. JAVA中匹配反斜杠的正则表达式的书写方式为: String regex=&q…
一 概念 众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类CheckedException和RuntimeException 二 发现问题 通常捕获异常catch的时候最大catch到Exception这个类就为止了,当然这能够处理大部分的异常情况. 但是值得注意的是,Exception不能捕捉到所有的异常.比如InvocationTargetExcepti…
一 概念 众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类CheckedException和RuntimeException 二 发现问题 通常捕获异常catch的时候最大catch到Exception这个类就为止了,当然这能够处理大部分的异常情况. 但是值得注意的是,Exception不能捕捉到所有的异常.比如InvocationTargetExcepti…
假如现在有一个需求,要你用Java语言来匹配出一个文本里面的所有(英文半角)标点符号,你会怎么写呢?我想大多数人应该是把这些符号都罗列出来, 如: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 但[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]这样写需要转义一下, 结果为: [-!"\#\$%&'()*+,./:;<=>?@   \^_`\{\|\}~] 然后写到java代码后…
今天群里有个人问,怎样用增则表达式匹配三角形的三边,其实只是要匹配三个数字而已,如 301 402 503 开始认为很简单,我就写了一个   "(([1-9]\\d?)\\s){2}$2" 结果他说错了,我感觉很奇怪,于是自己打开电脑试了试,果然是错的,然后看了看以前的笔记,发现我的Back 引用捕获组错了,因为$符号是在不同字符串中对捕获组的引用看下面这个方法 public static void text_1() { String str="我..我要...要要要..学.…
Java 正则表达式之捕获组 1. Java 正则表达式基础 2. Java 正则表达式之捕获组 一.概述 1.1 什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用.当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部. 捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组,通常所说的捕获组指的是普通捕获组.语法如下: 普通捕获组:(Expression) 命名捕获组:(?<name>Expression) 普通捕获组…
1        概述 1.1     什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用.当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部. 捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组,通常所说的捕获组指的是普通捕获组.语法如下: 普通捕获组:(Expression) 命名捕获组:(?<name>Expression) 普通捕获组在大多数支持正则表达式的语言或工具中都是支持的,而命名捕获组目前只有.NET…
现实世界中总是存在一组一组的事物,如俄罗斯方块.游戏中的技能.世界杯总决赛(8个小组,每组4个队) 一.python中如何表示“组”的概念 1.列表 1)定义 [1,2,3,4,5] type[1,2,3,4,5] 2)特性 组成列表的元素可以是不同的数据类型 如['hello','world',1,9,True,False] 列表的元素可以是列表,即嵌套列表.在其他语言也成为二维数组 如[[1,2],[3,4],['a','b']] 3)基本操作 访问某个元素——下标 访问某些元素——切片 更…
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作…
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作…
原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位.现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了. Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基…
一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 1     ((A)(B(C))) 2     (A) 3     (B(C)) 4     (C) 组零始终代表整个表达式. 以 (?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数. 与组关联的捕获输入始终是与组最近匹配的子序列.如果由于量化的缘故再次计算了组,则在第二次计算失败时将保留其以前捕获的值(如果有的话)例如,将字符串"ab…
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和 Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例 的模式控制下进行字符串的匹配…
1.为什么要用正则表达式 首先我们先来做一道题目:判断一个字符串是否由数字组成.代码示例如下: public class Test { public static void main(String[] args) { String str="5201314"; char[] chars = str.toCharArray(); boolean flag=true; for (int i=0;i<chars.length;i++){ if (chars[i]<'0'||cha…
http://lavasoft.blog.51cto.com/ http://lavasoft.blog.51cto.com/62575/179324      Java正则表达式应用总结   一.概述   正则表达式是Java处理字符串.文本的重要工具.   Java对正则表达式的处理集中在以下两个两个类: java.util.regex.Matcher   模式类:用来表示一个编译过的正则表达式. java.util.regex.Pattern   匹配类:用模式匹配一个字符串所表达的抽象结…
在JAVA正则表达式中量词(quantifiers)允许指定匹配出现的次数,方便起见,当前 Pattern API 规范下,描述了贪婪.勉强和侵占三种量词.首先粗略地看一下,量词X?.X??和X?+都允许匹配 X 零次或一次,精确地做同样的事情,但它们之间有着细微的不同之处. 量 词 种 类 意 义 贪婪 勉强 侵占 X? X?? X?+ 匹配 X 零次或一次 X* X*? X*+ 匹配 X 零次或多次 X+ X+? X++ 匹配 X 一次或多次 X{n} X{n}? X{n}+ 匹配 X n…
1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher.        首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作. 2.Pattern类: ( 一个Pattern对象是一个正则表达式经编译后的表现模式.)   Pattern的方法如下:    static Patter…
转载自:http://butter.iteye.com/blog/1189600 1.正则表达式的知识要点1.正则表达式是什么?正则表达式是一种可以用于模式匹配和替换的强有力的工具.2.正则表达式的优点?更少的代码,更高的效率.3.正则表达式如何使用?在下面的教程中我们将学习到正则表达式的用法.4.正则表达式的缺点?需要花一定的时间学习,这个时间由个人决定,一天或者更久一些.2.正则表达式的各种符号及其含义常用的符号 . 表示任意一个字符\s 空格字符(空格键, tab, 换行, 换页, 回车)…
原来,group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西. 最近学习正则表达式,发现Java中的一些术语与其他地方描述的有所差异.比如Java正则表达式中的“组”概念与<正则表达式必知必会>一书中讲述的“子表达式”其实是一样的,只是表述不同而已.由此也引发了使用JavaAPI时对group(int group).start(int group).end(int group)不是太理解. package…
元字符 正则表达式使用一些特定的元字符来检索.匹配和替换符合规则的字符串 元字符:普通字符.标准字符.限定字符(量词).定位字符(边界字符) 正则表达式引擎 正则表达式是一个用正则符号写出来的公式 程序对正则表达式进行语法分析,建立语法分析树 再根据语法分析树结合正则表达式引擎生成执行程序(状态机),用于字符匹配 正则表达式引擎是一套核心算法,用于建立状态机 小结 正则表达式 => 语法分析树 语法分析树 + 正则表达引擎 => 状态机 => 用于字符匹配 目前实现正则表达式引擎的方式有…
指定为字符串的正则表达式必须首先被编译为此类的实例.然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配.执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式. 因此,典型的调用顺序是 Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 在仅使用一次正则表达式时,可以方…
由于工作原因,一直没有时间把在线上遇到的问题总结一下.还好,今天我来了. 废话少说了. 主要说一下“java 正则表达式中的一个漏洞”,详细问题描述 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6988218 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507 目前使用 1.6 和 1.7 都没有修补该漏洞. 来个白话文吧 案例代码 Test.java final Patt…
http://blog.csdn.net/pipisorry/article/details/51059500 正则表达式的一般规则都一样,见[python正则表达式] java正则表达式中的特殊字符转义 1.字符"|","*","+"都得加上转义字符,前面加上"\\". 2.而如果是"\",那么就得写成"\\\\".(java正则表达式用起来都这么不爽!!!) java字符串分割 ja…
维基百科:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97 组是通过 "(" 和 ")" 元字符来标识的. "(" 和 ")" 有很多在数学表达式中相同的意思:它们一起把在它们里面的表达式组成一组.举个例子,你可以用重复限制符,象 *, +, ?, 和…