当前位置: 代码迷 >> J2SE >> 什么是正则表达式?能举例下吗?大哥们.解决思路
  详细解决方案

什么是正则表达式?能举例下吗?大哥们.解决思路

热度:100   发布时间:2016-04-24 12:58:39.0
什么是正则表达式?能举例下吗?大哥们...
split(参数)
说用到正则表达式,想知道到底什么是正则表达式

------解决方案--------------------
建议去看下编译原理。。。
------解决方案--------------------
一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用——很不幸,这篇文章也不能够改变这一点,不过,经过一点点练习之后我就开始觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。正则表达式被各种文本编辑软件、类库(例如Rogue Wave的tools.h++)、脚本工具(像awk/grep/sed)广泛的支持,而且像Microsoft的Visual C++这种交互式IDE也开始支持它了。


去baidu一下吧,比在这问块多了

------解决方案--------------------
正则表达式主要是用来匹配文本的,给你点参考资料吧


http://baike.baidu.com/view/94238.htm 
http://hi.baidu.com/ismayday/blog/item/7f5b86942741d11dd21b708f.html
------解决方案--------------------
概念不难,可以看看编译原理或者自动机理论,有些理论的指导学起来可能容易些.
看java文档里对Patter和Matcher两个类的说明,其实内容也不多.
用多了就好了.
------解决方案--------------------
就是用某种模式去匹配一类字符串的一个公式



MS很难的样子??? 做多了就好了
------解决方案--------------------
Java code
import java.util.Arrays;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegTest {    /**     * JAVA正则表达式常用的方法     * @param args     */    public static void main(String args[]){        /**         * 一、查询匹配         *          */        String str1="abc efg ABC";        String regEx1="a|f";   //表示a或f        Pattern p1=Pattern.compile(regEx1);        Matcher m1=p1.matcher(str1);        /*         * 如果str中有regEx,那么rs为true,否则为flase。         * 如果想在查找时忽略大小写,         * 则可以写成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);         */        boolean rs1=m1.find();        System.out.println(rs1);                //匹配是否有汉字        String str0="AaBbCc139汉字";        String regex0="[\u4e00-\u9fa5]";        Pattern p0=Pattern.compile(regex0);        Matcher m0=p0.matcher(str0);        boolean rs0=m0.find();        System.out.println(rs0);                /**         * 二、提取         *          */        String regEx2=".+\\\\(.+)$";        String str2="c:\\dir1\\dir2\\name.txt";        Pattern p2=Pattern.compile(regEx2);        Matcher m2=p2.matcher(str2);        boolean rs2=m2.find();        for(int i=1;i<=m2.groupCount();i++){            System.out.println(m2.group(i));        }        /*         * 以上的执行结果为name.txt,         * 提取的字符串储存在m.group(i)中,         * 其中i最大值为m.groupCount();         */        /**         * 三、分割         *          */        String regEx3="::";        Pattern p3=Pattern.compile(regEx3);        String[] r3=p3.split("xd::abc::cde");        System.out.println(Arrays.toString(r3));        //执行后,r就是{"xd","abc","cde"}        /*         * 其实分割时还有更简单的方法:         * String str="xd::abc::cde";         * String[] r=str.split("::");         */                /**         * 四、替换(删除)         *          */        String regEx4="a+"; //表示一个或多个a        Pattern p4=Pattern.compile(regEx4);        Matcher m4=p4.matcher("aaabbced a ccdeaa");        String s4=m4.replaceAll("A");        System.out.println(s4.toString());        //结果为"Abbced A ccdeA"        /*         * 如果写成空串,既可达到删除的功能,         * 比如:String s=m.replaceAll("");         * 结果为"bbced  ccde"         */            }        /**     * 附:     * \d 等於 [0-9] 数字      * \D 等於 [^0-9] 非数字      * \s 等於 [ \t\n\x0B\f\r] 空白字元      * \S 等於 [^ \t\n\x0B\f\r] 非空白字元      * \w 等於 [a-zA-Z_0-9] 数字或是英文字      * \W 等於 [^a-zA-Z_0-9] 非数字与英文字      * ^ 表示每行的开头     * $ 表示每行的结尾     */        }
------解决方案--------------------