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