我是Java新手,请多多包涵。您可以在下面看到我的代码。它应该做的是从文本文件中读取第3列,如果此列是S ** ei或P *** ei,它将返回该行的第一个单词。但是我的问题是“如何使*从a到z匹配任何字符”?我听说过正则表达式,但还没有真正使用它们。任何帮助将非常感激。谢谢。

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class moja {
    public static void main(String[] args) {
        try {
            File file = new File("SloveneLexicon.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer = new StringBuffer();
            String vrstica;
            while ((vrstica = bufferedReader.readLine()) != null) {

                String s = vrstica;
                String[] dobi_besedo_v_vrstici = s.split("\\s+");
                String prva_beseda = dobi_besedo_v_vrstici[0];
                String tretja_beseda = dobi_besedo_v_vrstici[2];
                if (tretja_beseda =="S**ei"){
                    System.out.println(prva_beseda);
                    if (tretja_beseda =="P***ei")
                        System.out.println(prva_beseda);
                }

            }
            bufferedReader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最佳答案

    Pattern p = Pattern.compile("Pi[a-zA-z]{3}ei");
    if(p.matcher(input).matches()){
        This will work for 3 any letters (big or small)
    }



“ Pi [a-zA-z] {3} ei” // 3个大小字母
“ Pi [a-zA-z] {1,3} ei” // 1-3个大小的字母
“ Pi [a-zA-z] + ei” //至少一个字母
“ Pi [a-zA-z] * ei” //零个或多个字母


只要记住将Pattern放在while循环之外,就应该定义一次并使用多次

09-28 01:48