请在不使用正则表达式的情况下在数组和文件内容之间进行匹配。
请重播 : -
如果我有一个txt文件包含这句话:
the sql is the best book for jon.
book sql is the best title for jon.
the html for author asr.
book java for famous writer amr.
如果我将这个字符串存储在数组中;
sql html java
jon asr amr
我想在文件中搜索数组的内容,例如,如果" sql"和"乔恩"在txt文件的同一个句子中然后写下句子和
在" sql"之前写下所有单词命名为前缀,以及两个" sql"之间的所有单词和"乔恩"并将其命名为 middle ,将所有单词命名为" jon"命名为后缀。
我试着写鳕鱼:
String book[][] = {{"sql","html","java"},{"jon","asr","amr"}};
String input;
try {
BufferedReader br = new BufferedReader(new FileReader(new File("sample.txt") ));
input= br.readLine();
while ((input)!= null)
{
if((book[0][0].contains(input))&( book[1][0]).contains(input)){
System.out.println();
if((book[0][1].contains(input))&( book[1][1]).contains(input)){
System.out.println();
if((book[0][2].contains(input))&( book[1][2]).contains(input)){
System.out.println();
}
else
System.out.println("not match");
}}
}} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我不知道如何编写代码来提取前缀,中间和后缀
输出是:
the sentence is : the sql is the best book for jon.
prefix is :the
middle is:is the best book for
suffix is: null
依旧......
答案 0 :(得分:0)
你应该使用Pattern类。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
教程http://docs.oracle.com/javase/tutorial/essential/regex/
抱歉,我不会写出确切的代码。
模式看起来像
"(.*)(?:sql|html|java)(.*)(?:jon|asr|amr)(.*)"
然后,在Matcher中,您将找到前缀,中间和后缀为matcher.group(1),matcher.group(2)和matcher.group(3)。
答案 1 :(得分:0)
以下是您需要的代码:
String line = "the sql is the best book for jon.";
String regex = "(.*)(sql|html|java)(.*)(jon|asr|amr)(.*)";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(line);
matcher.find();
String prefix = matcher.group(1);
String firstMatch = matcher.group(2);
String middle = matcher.group(3);
String secondMatch = matcher.group(4);
String suffix = matcher.group(5);