t.me/atinfo_chat Telegram группа по автоматизации тестирования

Регулярное выражение (\d+)


(Artem) #1

Код:

package stringtwo;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class string {
    
    /**
    *@param args
    */
    
public static void main(String[] args) {
    
    String qwer = "98d 01h 23m 45s";
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher(qwer);    
    if (m.matches()) {
    System.out.println(m.group());
    }
  }
}
 

Ребят, подскажите почему не матчится?

На консоль ничего не выводит?

Если так: Pattern p = Pattern.compile(".*");  то матчится вся строка.

Спасибо


(aspirin) #2

а разве должно?

тут жеж ("\\d+"); тока цифры и пробел, если я не ошибаюсь

   while (m.find()) {
            System.out.println(m.group());
        }

так найдет )


(Artem) #3

Пример,

 

package stringtwo;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class string {

public static void main(String[] args) {
    
String lwer = "ab34ef0";

Pattern p = Pattern.compile("\\d+$");

Matcher m = p.matcher(lwer);

if  (m.find()) {
 System.out.print(m.group());

  }
 }
}

 

 

Вы были правы, тоже нашел.

Я так понимаю find для чисел? а matches для букв?

Если возможно киньте ссылку где об этом прочитать, спасибо.

 

Спасибо.

 


(aspirin) #4

нет, find для всего что вы задали в ("\\d+$");

например,

d - только числа

a-z буквы

. - любой

и тд


(aspirin) #5

в помощь :)

http://gskinner.com/RegExr/

http://www.javaportal.ru/java/articles/regexp.html


(Mykhailo Poliarush) #6

\\d+ потому это выражение матчит вот такую строку \dddddd

а вам надо \d+ который матчит 12352134

два \\ это вы просто экранировали бекслеш а не указали что вы ищите цифры

ну и видео в придачу. приятного просмотра


(Alexander Ivanovsky) #7
В Java-коде регулярное выражение "\d+" и должно выглядеть как "\\d+", иначе код просто-напросто не скомпилируется.
А первый пример не работал из-за того, что метод matches() возвращает true только в том случае, если вся строка соответствует регулярному выражению.

(Alexander Ivanovsky) #8

Советую почитать официальный тьюториал -- http://docs.oracle.com/javase/tutorial/essential/regex/, там довольно подробно описано как работать с регулярными выражениями в Java. В частности, вы узнаете, что методы find() и matches() предназначены для разных целей, и от "чисел/букв" это не зависит.

А если планируете часто использовать РВ в работе, очень советую почитать книгу Джеффри Фридла "Регулярные выражения" (хотя бы несколько первых глав). 3-е издание на русском языке есть на рутрекере, да и на многих других сайтах.


(Artem) #9

Спасибо, ребят.