Artem
(Artem)
September 5, 2012, 11:37am
#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
(aspirin)
September 5, 2012, 12:46pm
#2
а разве должно?
тут жеж ("\\d+"); тока цифры и пробел, если я не ошибаюсь
while (m.find()) { System.out.println(m.group()); }
так найдет )
Artem
(Artem)
September 5, 2012, 1:18pm
#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
(aspirin)
September 5, 2012, 1:33pm
#4
нет, find для всего что вы задали в ("\\d+$");
например,
d - только числа
a-z буквы
. - любой
и тд
aspirin
(aspirin)
September 5, 2012, 1:34pm
#5
в помощь :)
http://gskinner.com/RegExr/
http://www.javaportal.ru/java/articles/regexp.html
polusok
(Mykhailo Poliarush)
September 5, 2012, 5:56pm
#6
\\d+ потому это выражение матчит вот такую строку \dddddd
а вам надо \d+ который матчит 12352134
два \\ это вы просто экранировали бекслеш а не указали что вы ищите цифры
ну и видео в придачу. приятного просмотра
SUNx2YCH
(Alexander Ivanovsky)
September 8, 2012, 6:26pm
#7
В Java-коде регулярное выражение "\d+"
и должно выглядеть как "\\d+"
, иначе код просто-напросто не скомпилируется.
А первый пример не работал из-за того, что метод matches()
возвращает true
только в том случае, если вся строка соответствует регулярному выражению.
SUNx2YCH
(Alexander Ivanovsky)
September 8, 2012, 6:47pm
#8
Советую почитать официальный тьюториал -- http://docs.oracle.com/javase/tutorial/essential/regex/ , там довольно подробно описано как работать с регулярными выражениями в Java. В частности, вы узнаете, что методы find()
и matches()
предназначены для разных целей, и от "чисел/букв" это не зависит.
А если планируете часто использовать РВ в работе, очень советую почитать книгу Джеффри Фридла "Регулярные выражения" (хотя бы несколько первых глав). 3-е издание на русском языке есть на рутрекере, да и на многих других сайтах.