查找文件中字符串(正则表达式实现)
引言:
今天群友问到一个查找文件流中广播IP的问题,可以使用indexOf(),substring()实现。写法也不难,只是维护比较麻烦。因此顺手写了段样例代码,欢迎新手围观。
此处略去,吹正则有多强大的200字,然后突出一下,遇到查找字符串问题的时候,建议先考虑正则。
正文:
不提取方法了,直接放在main里面看吧。另外,为了方便运行用了字符串装配了个reader,可能存在编码问题,这里提一下就不叨叨了。
代码如下:
/* * Author :zhaoningbo * Date :2012-4-9 下午04:17:17 * Email :zhaoningbo@hotmail.com * Blog :http://zhaoningbo.iteye.com/ */package com.number.util;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class BufferedRegex { public static void main(String[] args) throws IOException { String patt = "broadcast \\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3} "; BufferedReader reader = new BufferedReader( new StringReader( "netmask ffffff00 broadcast 192.168.1.255 \n " + "ether 0:1e:67:7:8:d \n " + "..........ff00 broadcast 192.168.200.255 ...." + "...broadcast 192.168.200.100 \n")); Pattern pattern = Pattern.compile(patt); String strTemp; while ((strTemp = reader.readLine()) != null) { Matcher matcher = pattern.matcher(strTemp); while (matcher.find()) { System.out.print("----" + matcher.group()); } System.out.println("END_LINE"); } }}
----broadcast 192.168.1.255 END_LINEEND_LINE----broadcast 192.168.200.255 ----broadcast 192.168.200.100 END_LINE