matcher.group(1) не возвращает результата

    public class GetProp extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String file_proc = readFile();
        TextView tv = (TextView)findViewById(R.id.tv);
        tv.setText("Read File contents from SDCARD : \n" + file_proc);
    }
    public String readFile(){
        BufferedReader rdr;
        String proc = "";
        String line;
        int lineNumber = 0;
        try {
            rdr = new BufferedReader(new FileReader("/proc/cpuinfo"));     
            while ((line = rdr.readLine()) != null) {
                lineNumber++;
            Matcher matcher = Pattern.compile("Processor: (.*)").matcher(line);
            if (matcher.find()) {
                proc = matcher.group(1);
            }
            }           
        } catch (Exception e) {
            e.printStackTrace();
        }
        return proc;        
    }
}

Я хочу напечатать одну строку из файла /proc/cpuinfo txt, например, Processor: "RESULT", где RESULT - matcher.group(1). Но у меня нет текста в результате, где моя проблема?

1 ответ

Решение

Это то, что мой /proc/cpuinfo похоже:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 42
/* etc */

Есть две проблемы с вашим регулярным выражением:

  1. Регулярные выражения чувствительны к регистру. Либо измените его на processorили используйте Pattern.compile(..., Pattern.CASE_INSENSITIVE),
  2. Есть пробел между processor и толстая кишка. Вы должны изменить свое регулярное выражение на processor\\s*: (.*)
Другие вопросы по тегам