- 浏览: 153809 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
hardPass:
貌似二分法,没有一个合并的过程
简单_分治算法 -
zhufeng1981:
讲解的不错,支持一下。
简单_分治算法 -
a346063587:
嗯。。的确,基础很重要!
关于递归和尾递归的原理 -
zhufeng1981:
huoyj 写道基础很重要,这是永远不变的真理。 很赞同这句话 ...
关于递归和尾递归的原理 -
huoyj:
基础很重要,这是永远不变的真理。 很赞同这句话
关于递归和尾递归的原理
没有事做,就会堕落。。
这个世界有太多的浮躁,要耐得住诱惑;
要时刻告诫自己,认清方向,否则就可能就真的堕落了!!
闲来无事学习了java正则表达式及java.util.regex包
贴上学习的代码,虽然是入门级的东东,希望能以此方式记录下自己曾经努力过付出过。
参考正则表达式http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
这个世界有太多的浮躁,要耐得住诱惑;
要时刻告诫自己,认清方向,否则就可能就真的堕落了!!
闲来无事学习了java正则表达式及java.util.regex包
贴上学习的代码,虽然是入门级的东东,希望能以此方式记录下自己曾经努力过付出过。
参考正则表达式http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
package sunfa.lx; import java.util.Arrays; import java.util.regex.Pattern; /** * java.util.regex包负责对字符序列进行正则表达式匹配 * Pattern负责编译 * Matcher负责匹配 * --------------- * 正则表达式: *1、元字符 好比char,紧紧代表一个字符; *2、某些字符,比如\、.、*等这样的字符在正则表达式中已经被作为标记使用了,如果你想作为非元字符使用的话就得进行转义,转义的方法是在这些字符前面加\, * 比如\就变成\\,.就成为\. *3、重复的元字符有:*,+,?,{n},{n,},{n,m},这个标记是用来修饰它前面的那个字符的。 *4、字符类,或称为分组[],比如[0-9],[0-9A-Za-z]用-表示范围 */ public class PatternDemo1 { public static void main(String[] args) { /**1、元字符的[]*/ //[]属于元字符系列,所谓元字符简单的说就是字符,就是一个char,像bc就不是一个char了 // method2(new String[]{"abt","act","adt","abct","bt"}, "a[bcd]t"); //[]的区间,-的两头代表区间,多区间这样写,比如[0-9a-zA-Z] // method2(new String[]{"a1t","a3t","a01t","abt","2t"}, "a[0-9]t"); //补集用^表示,在二元运算符中这是非的意思,尽管用了^,at还是不能通过,所以元字符[]必须有且仅有一个字符 // method2(new String[]{"a0t","a2t","abt","at"}, "a[^0246]t"); /**2、元字符的? + * */ //?的目标是它前面的一个字符,元字符?表示它前面的一个字符出现0次或1次 // method2(new String[]{"","a","aa","at","a1t"}, "a?"); //元字符+的目标是它前面的一个字符,它表示它前面的那个字符出现1次或多次 // method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a+"); //元字符*的目标是它前面的一个字符,它表示它前面那个字符出现0次或多次,*可以说是?和+的并集 // method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a*"); /** .元字符能匹配任何字符(换行\r除外),所以用.*可以匹配换行外的任何字符串 */ // method2(new String[]{"","a","aa","aaaaa","at","a1t","\t","\r","n"}, "."); // method2(new String[]{"","a","aa","aaaaa","at","a1t","\t","\r","n"}, ".*"); /** 数量{n},{n,},{n,m}*/ //{n}表示它前面的字符重复n次,并且只重复n次,重复n-1次或n+1次都是不可以的 // method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a{2}"); //{n,}是对{n}的扩展,表示重复n次(包含n次)以上 // method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a{2,}"); //{n,m}表示数目在n到m范围内,包含两头 // method2(new String[]{"","a","aa","aaa","aaaa","aaaaa","at"}, "a{2,4}"); // method2(new String[]{"12345-1234","12345"}, "\\d{5}-\\d{4}|\\d{5}"); // // method2(new String[]{"12345-123","12345"}, "\\d{5}|\\d{5}-\\d{4}"); // method2(new String[]{"211","12345"}, "2[0-4]\\d"); // method2(new String[]{"1","12345"}, "[01]?\\d\\d?"); method2(new String[]{"1","12345","12"}, "[0-9]"); } private static void method2(String[] a,String regex){ Pattern p = Pattern.compile(regex); for (int i = 0; i < a.length; i++) { System.out.println(a[i]+","+p.matcher(a[i]).matches()); } } private static void method1(){ String str = "2011-11-12"; String pat = "\\d{4}-\\d{2}-\\d{2}"; System.out.println(Pattern.compile(pat).matcher(str).matches()); String str1 = "a1b22c333d4444e55555f"; //按数字来分割 String[] str1Arr = Pattern.compile("\\d+").split(str1); System.out.println(Arrays.toString(str1Arr)); //数字全部替换成_ System.out.println(Pattern.compile("\\d+").matcher(str1).replaceAll("_")); //去除所有的空格 System.out.println("\\s去除所有的空格:"+Pattern.compile("\\s").matcher("aa b c d ").replaceAll("")); System.out.println("5-10个字符:"+Pattern.compile(".{5,10}").matcher("12345").matches()); System.out.println("多匹配:"+Pattern.compile("\\bhi.*Lucy\\b").matcher("hi后面不远处跟着一个Lucy").matches()); System.out.println("多匹配2:"+Pattern.compile("^\\d{5,12}$").matcher("12345678a").matches()); //直接调用String类提供的方法更加的方便 System.out.println(Arrays.toString(str1.split("\\d+"))); System.out.println("2011-11-12".matches("\\d{4}-\\d{2}-\\d{2}")); } }
发表评论
-
高效编写JAVA代码的几条建议(转)
2011-11-23 20:34 1371(1) 类名首字母应该大写 ... -
quartz的配置(转自网络)
2011-11-16 20:18 1209周允许的是1-7 其中1 ... -
[转自网络]freeMarker的常用语法(以后可能会用到)
2011-11-16 09:48 1220常用语法 EG.一个对象BOOK 1.输出 $…{book ... -
开源定时器quartz入门
2011-11-15 20:03 4889闲来无事学习了下quartz框架,其实JAVA下的定时器框架还 ... -
freeMarker入门
2011-11-14 22:26 1566freeMarker是一个 JAVA开源模版引擎 下面以创建 ... -
java.util.logging包的学习
2011-11-11 22:07 1352package sunfa.lx; import jav ... -
mybatis中的一个OOXX
2011-11-08 15:11 1256mybatis : mybatis XML中执行多条语句: ... -
Timer和ScheduledExecutorService区别
2011-10-09 23:59 3243Timer里面的任务如果执行时间太长,会独占Timer对象,使 ... -
java io流之 装饰模式
2011-10-05 21:41 1163初学java.io的时候容易被众多的IO类搞晕头,其实java ... -
java nio学习笔记<一>
2011-10-05 21:04 1102package nio; import java.i ... -
java.util.concurrent.atomic.*包的体会
2011-10-01 18:10 1476java.util.concurrent.atomic.*包的 ... -
计算很大数组中List的和
2011-09-30 19:45 1100原帖地址: http://www.iteye.com/topi ... -
CountDownLatch、CyclicBarrier让多线程变得更简单
2011-09-29 16:54 1115CountDownLatch 一个同步辅助类,在完成一组正在其 ... -
山寨同步队列 VS 官方BT的ArrayBlockingQueue ,结果官方落马!!!
2011-09-29 15:30 1039官方的java.util.concurrent.ArrayBl ... -
突然发现自己的JAVA基础很差
2011-09-25 11:50 1172今天因为一个问题上网搜索却牵扯出了另一个问题。。。纠结。、、还 ... -
java_Comparable & Comparator
2011-09-21 23:21 1462java有2个非常重要的排序接口:java.lang.Comp ... -
tomcat,jboss部署方式(热部署)
2011-06-26 16:08 2845tomcat: 1、直接把项目web文件夹放在webapps里 ... -
JAVA书籍(IO多线程等)
2011-05-29 15:47 1025留下这些书,纪念我曾经走过的路。 -
java IO的学习总结
2011-05-29 15:31 10641、JAVA中的IO流分字节流和字符流 2、InputStre ... -
关于JAVA3D游戏(摘自网络)
2011-01-02 16:56 24112006年8月,我们终于决定用计算机三维视觉游戏机制制作自己的 ...
相关推荐
在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在Java项目中使用正则表达式的流程,它提供了一系列内置的验证、提取和清洗方法,使得处理字符串...
在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心类。 **1. Pattern类** Pattern类是Java正则表达式的起点,它将一个正则表达式编译成一个模式对象。这个编译过程可以优化...
Java中的正则表达式主要通过`java.util.regex`包来实现,核心类有`Pattern`和`Matcher`。`Pattern`是编译正则表达式的对象,编译后可以多次使用。`Matcher`对象是实际执行匹配操作的对象,它与输入字符串关联,并...
Java中的正则表达式主要通过`java.util.regex`包中的类来实现,如`Pattern`和`Matcher`。 在日志处理中,我们通常需要完成以下任务: 1. **过滤日志级别**:日志通常包含不同的级别,如DEBUG、INFO、WARN、ERROR等...
- `java.util.regex.Pattern`:编译正则表达式为模式对象,用于后续的匹配操作。 - `java.util.regex.Matcher`:与Pattern对象配合,执行实际的匹配、查找和替换操作。 3. **MetaCharacters(元字符)** - 元...
Java提供了`java.util.regex`包来支持正则表达式的操作,主要包括`Pattern`和`Matcher`两个类。 4. **正则表达式的局限性?** 学习曲线较陡峭,初学者可能需要时间去理解和掌握其复杂性。同时,过度使用可能导致...
Java提供了`java.util.regex`包,通过`Pattern`和`Matcher`类支持正则表达式。以下是如何在Java中验证电话号码的一个例子: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; String...
在Java中,正则表达式的使用主要依赖于`java.util.regex`包中的类,如`Pattern`和`Matcher`。 首先,我们来看`Pattern`类。这个类是正则表达式的模板,负责编译和存储正则表达式。一旦正则表达式被编译为`Pattern`...
在Java中,正则表达式的操作主要涉及两个核心类:`java.util.regex.Matcher`和`java.util.regex.Pattern`。 `Pattern`类是用来编译正则表达式的,它可以将字符串转化为一个可以执行匹配操作的对象。这个对象包含了...
- Java中的正则表达式主要通过`java.util.regex`包下的`Pattern`类与`Matcher`类实现。 **3.2 使用步骤** 1. **构造模式**:使用`Pattern.compile(regex)`方法创建`Pattern`对象。 - 示例:`Pattern p = Pattern....
在Java标准库中的java.util.regex包之外,Jakarta ORO提供了额外的特性和优化,使得它在某些场景下比原生的Java正则表达式API更为实用。 Jakarta ORO的核心功能包括: 1. **高效性能**:Jakarta ORO采用了优化的...
在Java中,正则表达式通常通过`java.util.regex.Pattern`和`java.util.regex.Matcher`两个类进行操作。 1. 创建Pattern对象: ```java Pattern pattern = Pattern.compile("正则表达式"); ``` 之后,你可以使用...
Java的正则表达式主要由`java.util.regex`包中的三个关键类构成:`Pattern`、`Matcher`和`PatternSyntaxException`异常类。 1. **Pattern类**:该类用于编译正则表达式字符串,并创建一个Pattern对象,用于匹配文本...
在Java中,我们可以使用java.util.regex包来使用正则表达式。在这个包中,有两个主要的类:Pattern和Matcher。 Pattern类是正则表达式的编译表示形式,它将正则表达式编译成一个模式,使其可以被Matcher类使用。...
使用java.util.regex. 371 The Pattern.compile() Factory. 372 Pattern的matcher方法... 373 Matcher对象... 373 应用正则表达式... 375 查询匹配结果... 376 简单查找-替换... 378 高级查找-替换... 380 ...
Java正则表达式基于Perl 5的模式匹配规则,通过`java.util.regex`包提供的类和接口实现。核心类有`Pattern`和`Matcher`,它们分别用于编译正则表达式和执行匹配操作。 1. `Pattern`: 此类代表预编译的正则表达式...
import java.util.regex.*; public class IDCardValidator { public static void main(String[] args) { String idCard = "123456789012345"; // 示例身份证号码 boolean isValid = validateIDCard(idCard); ...
其他流行的引擎包括.NET Framework中的System.Text.RegularExpressions和Java中的java.util.regex包。 - **Perl兼容正则表达式 (PCRE)**:这是PHP中最常用的正则表达式引擎,提供了丰富的功能和灵活性。 - **.NET ...
2. Java 正则表达式的历史:Java 一直以来没有自带对正则表达式的支持,直到 Java 1.40 版本引入了 java.util.regex 包。之前,许多第三方类库提供了对正则表达式的支持,但这些类库都不一致、兼容性差。 3. ...
这个库不仅包含了标准Java API中的`java.util.regex`包,还可能包含了一些第三方库,如`automaton-1.11-7`,这可能是对Java正则表达式功能的一种扩展或优化。 正则表达式的语法是相当丰富的,包括字符类(如`\d`...