jgrep15.java

来自「java编程思想第四版习题答案」· Java 代码 · 共 45 行

JAVA
45
字号
// strings/JGrep15.java
// TIJ4 Chapter Strings, Exercise 15, page 546
// Modify JGrep.java to accept flags as arguments (e.g., Pattern.CASE_INSENSITIVE,
// Pattern.MULTILINE).
// {Args: JGrep15.java "\b[Ssct]\w+", Pattern.CASE_INSENSITIVE}
import java.util.regex.*;
import net.mindview.util.*;

public class JGrep15  {
	public static void main(String[] args) throws Exception {
		if(args.length < 3) {
			System.out.println("Usage: java JGrep file regex flag");
			System.exit(0);
		}
		int flag = 0;
		if(args[2].equals("Pattern.CASE_INSENSITIVE"))
			flag = Pattern.CASE_INSENSITIVE;
		else if(args[2].equals("Pattern.CANON_EQ"))
			flag = Pattern.CANON_EQ;
		else if(args[2].equals("Pattern.COMMENTS"))
			flag = Pattern.COMMENTS;
		else if(args[2].equals("Pattern.DOTALL"))
			flag = Pattern.DOTALL;
		else if(args[2].equals("Pattern.LITERAL"))
			flag = Pattern.LITERAL;
		else if(args[2].equals("Pattern.MULTILINE"))
			flag = Pattern.MULTILINE;
		else if(args[2].equals("Pattern.UNICODE_CASE"))
			flag = Pattern.UNICODE_CASE;
		else if(args[2].equals("Pattern.UNIX_LINES"))
			flag = Pattern.UNIX_LINES;
		Pattern p = Pattern.compile(args[1], flag);
		// Iterate through the lines of the input file:
		int index = 0;
		Matcher m = p.matcher(""); // creates empty Matcher object
		for(String line : new TextFile(args[0])) {
			m.reset(line);
			while(m.find())
				System.out.println(index++ + ": " +
					m.group() + ": " + m.start());
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?