0

请在不使用正则表达式的情况下在数组和文件内容之间进行匹配。

请重播:-

如果我有一个 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”和“jon”在 txt 文件中的同一个句子中,然后写下句子和

将“sql”之前的所有单词命名为前缀,将两个“sql”和“jon”之间的所有单词命名为中间,将“jon”之后的所有单词命名为后缀

我尝试写 cod :

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

等等...

4

2 回答 2

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)。

于 2013-04-06T20:13:48.640 回答
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);
于 2013-04-06T20:40:43.430 回答