本程序的功能是,根据用户输入的文件名,在相应的文件内容中查找匹配给定模式的字符串,并将这些字符串显示出来。模式串为“href="…"”。请填写横线处的内容。 注意:请勿改动main()主方法和其他已有语句内容,仅在横线处填入适当语句。 import java.io.*; import java.util.regex.*; import javax.swing.*; public class Example2_10 { public static void main(String [] argv) { final String patternString = "href\\s*=\\s*(\"[^\"]*\"|[^\\s>])\\s*; String fileName ; try { System. out. print ( "请输入html 文件的文件名: "); InputStreamReader in = new InputStreamReader(System.in); BufferedReader imput = new BufferedReader(in); fileName = imput.readLine(); if(fileName.equals(" ")) return; StringBuffer buffer = new StringBuffer(); File file = new File(fileName); FileInputStream readfile = new FileInputStream(file); for(int c = 0; (c = readfile.read()) != -1; ) buffer.append((char)c); Pattern pattern = Pattern.compile( _____________ Pattern.CASE_INSENSITIVE); Matcher matcher =________; while (marcher. find ()) {int start = matcher.start();int end = matcher.end();String match = buffer.substring(start, end);System.out.println (match); } } catch (Exception excption) { System. out.println (excption. getMessage ()); } System.exit(O); } }
参考答案:
解析:patternString pattern.matcher(buffer) 本题考查知识点:输入输出流和正则表达式解题思路:程序首先使用InputStreamReader的实例“in”从标准输入中获取用户输入的文件名,并将结果存放在“fileName”字符串中。if语句用来判断用户输入的文件名是否为空,如果为空则退出程序,不做任何处理。然后根据文件名读取相应的文件内容存放在StringBuffer的实例“buffer”中。然后建立起与正则表达式对应的模式对象“pattem”,并与“buffer”帮定,生成一个匹配器“matcher”。最后使用while循环查找到相应的字符串。 Patter的compile方法用来将正则表达式编译成模式对象。compile方法的第一个参数是正则表达式字符串,所以第一个空的答案是“patternString”。 第二个空用来建立一个匹配器。模式对象建立匹配器的方法是matcher(string),其中string是需要做模式匹配的兑现,本题中需要做模式匹配的对象是“buffer”。