Java正则表达式奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 14:42:41
有一个小程序:是java编程思想中的一个小问题
// {Args: JGrep.java "\\b[Ssct]\\w+"}
import java.util.regex.*;
import net.mindview.util.*;

public class JGrep {
public static void main(String[] args) throws Exception {
if(args.length < 2) {
System.out.println("Usage: java JGrep file regex");
System.exit(0);
}
Pattern p = Pattern.compile(args[1]);
// Iterate through the lines of the input file:
int index = 0;
Matcher m = p.matcher("");
for(String line : new TextFile(args[0])) {
m.reset(line);
while(m.find())
System.out.println(index++ + ": " +
m.group() + ": " + m.start());
}
}
}
程序大意是要求运行些程序的时候,输入两个参数,第一个参数是要读入的文件(JGrep.java),第二个参数是要匹配的正则表达式,在java中的表示方法应该是\\b[Ssct]\\w+用\\表示的,而且以前调试程序都是\\正常运行的,而唯独这个程序要换成\b[Ssct]\

你说的是从命令行输入“\b[Ssct]\w+”吧。
在源程序里,\表示转义,所以,正则表达式中\b是退格,\\b是边界。但在命令行中,每个输入的\有真实含义的,不是转义,所以不必输入2个。