正则表达式
正则表达式 正则表达式:符合一定规则的表达式。 作用:专门操作字符串 特点:用于一些特定的符号来表示一些代码的操作。这样就简化书写。 好处:可以简化对字符串的复杂操作。 弊端:符号定义越多,正则越长,阅读新越差。 String类 1、匹配:boolean matches(regex)用规则匹配整个字符串,只要有一处不符合规则,就结束返回false。 2、切割:String[] split(regex);
//按照叠词完成切割。为了可以让规则的结果被重用 //可以将规则封装成一个组。用()完成。组的出现都有编号。 //从1开始。 想要使用已有的组可以通过 n(n就是组的编号)的形式来获取。 String str1 = "erkktyqqquizzzzzo"; String reg = "(.)1+"; String[] arr = str1.split(reg); System.out.println(arr.length); for(String s : arr) { System.out.println(s); } 3、替换:String[] replaceAll(regex,str):str为要替换为的字符串
String str = "我我...我我...我要..要要...要要...学学学....学学...编编编...编程..程.程程...程...程"; str = str.replaceAll(".",""); System.out.println(str); str = str.replaceAll("(.)1+","$1"); System.out.println(str); 当要应用的组不再同一个字符串内,想要用前一个字符串的组用$n(n为编号)。 将重叠的字符替换为单个字符,将叠词替换掉用$ 4、获取:将字符串中的符合规则的子串取出。 步骤: 1)、将正则表达式封装成Pattern对象。Pattern p = Pattren。compile(regex); 2)、让正则对象和要操作的字符串相关联。p.matcher(String); 3)、关联后获取正则匹配引擎(匹配对象)。Matcher m =p.matcher(String); 其实String类中的matches方法用的就是Pattern和Matcher对象来完成。 只不过被String的方法封装后,用起来较为简单,但是功能单一。 boolen find():匹配查找,返回找到true还是找不到false,同时记录指针,用于下次find String group():取出上一步find()所找到的结果。 必须用find()再group()才能获取。 通过迭代就可以把匹配到的所有结果取出。 匹配器Matcher中的指针是公用的,当用matches匹配后,指针就会产生变化,当再用find查找时,就是从匹配后的位置开始查找 { BufferedReader bufr = new BufferedReader(new FileReader("mail.txt")); String line = null; String mailreg = "w+@w+(.w+)+"; Pattern p = Pattern.compile(mailreg); while((line=bufr.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { System.out.println(m.group()); } } }注意:在正则当中反斜杠“”都是成对出现的。因为单个反斜杠“”是代表转译,必须要转译回来。 到底用四种功能中的哪一个呢?或者哪几个呢? 思路: 1、如果只想知道该字符是否对错,使用匹配。 2、想要将已有的字符串变成另一个字符串,用替换 3、想要安装指定的方式将字符串变成多个字符串,用切割,获取规则以外的子串。 4、想要拿到符合需要的字符串子串,获取。获取符合规则的子串。
网路爬虫 通过网络以及IO读取网页的源文件,并通过规则获取网页中的符合规则的数据
{ URL url = new URL("http://dzh.mop.com/whbm/20060907/0/7z5S8I707f188a73.shtml"); url.openConnection(); BufferedReader buf = new BufferedReader(new InputStreamReader(url.openStream())); String line = null; String reg = "w+@w+(.w+){1,3}"; Pattern p = Pattern.compile(reg); while((line = buf.readLine())!=null) { Matcher m = p.matcher(line); while(m.find()) { System.out.println(m.group()); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |