Использование регулярных выражений для извлечения значения в Java - PullRequest
152 голосов
/ 26 октября 2008

У меня есть несколько строк в грубой форме:

[some text] [some number] [some more text]

Я хочу извлечь текст из [некоторого числа], используя классы Java Regex.

Я примерно знаю, какое регулярное выражение я хочу использовать (хотя все предложения приветствуются). Что меня действительно интересует, так это вызовы Java для получения строки регулярного выражения и ее использования в исходных данных для получения значения [some number].

РЕДАКТИРОВАТЬ: Я должен добавить, что меня интересует только один [некоторый номер] (в основном, первый экземпляр). Исходные строки короткие, и я не собираюсь искать несколько вхождений [некоторого числа].

Ответы [ 13 ]

0 голосов
/ 11 апреля 2014

если вы читаете из файла, это может вам помочь

              try{
             InputStream inputStream = (InputStream) mnpMainBean.getUploadedBulk().getInputStream();
             BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
             String line;
             //Ref:03
             while ((line = br.readLine()) != null) {
                if (line.matches("[A-Z],\\d,(\\d*,){2}(\\s*\\d*\\|\\d*:)+")) {
                     String[] splitRecord = line.split(",");
                     //do something
                 }
                 else{
                     br.close();
                     //error
                     return;
                 }
             }
                br.close();

             }
         }
         catch (IOException  ioExpception){
             logger.logDebug("Exception " + ioExpception.getStackTrace());
         }
0 голосов
/ 11 апреля 2014

Иногда вы можете использовать простой метод .split ("REGEXP"), доступный в java.lang.String. Например:

String input = "first,second,third";

//To retrieve 'first' 
input.split(",")[0] 
//second
input.split(",")[1]
//third
input.split(",")[2]
0 голосов
/ 14 января 2010

Как насчет [^\\d]*([0-9]+[\\s]*[.,]{0,1}[\\s]*[0-9]*).* Я думаю, что это позаботится о числах с дробной частью. Я включил пробелы и включил , в качестве возможного разделителя. Я пытаюсь получить числа из строки, включая числа с плавающей запятой, и учитывая, что пользователь может ошибиться и включить пробелы при наборе числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...