正则表达式

来源:互联网 发布:全国网络通缉名单2017 编辑:程序博客网 时间:2024/05/02 06:44

---------------------- android培训java培训、期待与您交流! ---------------------- ----------------------



正则表达式

是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符。
其实就是一种规则。有自己特殊的应用。
匹配规则请参考正则表达式规则:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
本人初学,做一些小例子分享一下;
直接上案例吧!!!


正则表达式匹配:/** *QQ号   第一位不能为0   长度在5到15为之间  只能出现数字 */public class Dmeo{public static void main(String[] args){while(true){Scanner sc = new Scanner(System.in);String str = sc.Next();//在java中\是转意字符,在正则表达式中\也属于转意字符// \d匹配 0-9的所有数字String regex = "[0-9]\\d{4,14}";String[] result = str.matches(regex);for(String st : result){System.out.print(st);}}}} //输出结果:01234false1234589true


/***匹配邮箱是否正确?*@前面随便输出字母和数字 最低5位最高不能超过11位   @后面最低为2位 最高为4位   后面可以com.cn 也可以是com*1021415187@qq.com*wodee@sina.com.cn*sin123@163.com**/public class Demo{public static void main(String[] args){while(true){Scanner sc = new Scanner(System.in);String str = sc.getNext();String regex = "\\w{5,11}@\\w{2,4}(\\.\\w{2,3}){1,2}";}}}//输出结果:1234@qq.comfalse12345@qq.comtrue1234566@sina.com.cntrue



String regex = "\\w{5,11}@\\w{2,4}(\\.[a-zA-z]{2,3}){1,2}";
解释下上述代码: \\w{5,11}为所有字母和数字至少5次最多11次
(\\.[a-zA-z]{2,3}) .  任意字母2个到三个        (组){1,2} 1个或者2个

正则表达式分割:/***a,b,c 分割为abc**/public class Demo{public static void main(String[] args){String str = "a,b,c";String regex = ",";String[] s1 = str.split(regex);for(String s :s1){System.out.println(s);}String str2 = "a     b     c";String regex2 = " +";//以空格一次或多次 作为分割String[] s2 = str2.split(regex2);for(String s3 :s2){System.out.print(s3);}}}//输出结果:abc


/***C:\\JavaCoding\\workspace\\1.txt*分割为 C JavaCoding workspace  1.txt*思路 先 用\\分开 然后将C:再处理*/public class Demo{public static void main(String[] args){String str = "C:\\JavaCoding\\workspace\\1.txt";//正则表达式 \为转移  JAVA中\为转移  String regex = "\\\\";String[] s1 = str.split(regex);System.out.print(s1[0].split(":").[0]);for(String s :s1){if(s.equals(s1[0])){System.out.println(s1[0].split(":")[0]);continue;}System.out.println(s);}}}//输出结果:CJavaCodingworkspace1.txt



/***aabddaskkl*分割为 bal*使用(组) \n规则的结果重用*/public class Demo{public static void main(String[] args){String str = "aabddaskkl";//判断规则    第一位结果为a时  看第二位是不是a 是aa切割符//3结果是b  后面是不是 b  不是  String regex = "(a-z)\\1";String[] s1 = str.split(regex);for(String s :s1){System.out.println(s);}}}//输出结果:basl


替换功能:/***sdasdsadsad1232131sdsd123*1.数字全都换为**2.多个数字 变为1个**/public class zhengzebiaodashi {public static void main(String[] args) {String str ="sdasdsadsad1232131sdsd123";//0-9一次或多次String regex= "\\d+";//0-9 String regex2 = "\\d";System.out.println(str.replaceAll(regex,"*"););System.out.println(str.replaceAll(regex2,"*"));}}//输出结果:sdasdsadsad*sdsd*sdasdsadsad*******sdsd***


获取功能:public class zhengzebiaodashi19 {public static void main(String[] args) {String str ="hah jiji ads ddd weww,asd dsds";//连续3个并且左边和右边为单词边界String regex= "\\b\\w{3}\\b"; //把规则编译成模式对象Pattern p = Pattern.compile(regex);//通过模式对象 拿到匹配器Matcher m =p.matcher(str);//有没有满足条件的子串//boolean b = m.find();//System.out.println(b);while(m.find()){System.out.println(m.group());}}}//输出结果:hahadsdddasd


在正则的基础上,我们可以制作网络爬虫捕获我们需要的内容。好了就说到这里把,可能将的不够详细,敬请谅解!
0 0
原创粉丝点击