Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: подскажите с регулярным выражением

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: регулярные выражения в java
er1313
Отправлено: 19 Апреля, 2014 - 15:23:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Есть три варианта строки:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  String newStr  = "2:4 (1:0, 2:0, 2:0) pso";
  2.  String newStr1 = "2:3 (0:1, 0:1) aet";
  3.  String newStr2 = "2:2 (0:1) ";


Можно ли составить универсальное регулярное выражение, которое смогло разобрать любую из трех строк выше?

Попробовал для первой строки, получилось для цифр, но не получилось для букв.

CODE (htmlphp):
скопировать код в буфер обмена
  1. String dStr1 = "(\\d{1,2}):(\\d{1,2}) (\\(\\d{1,2}):(\\d{1,2}), (\\d{1,2}):(\\d{1,2}), (\\d{1,2}):(\\d{1,2})";
  2.  
  3. Pattern pt = Pattern.compile(dStr1);
  4.            
  5. Matcher mt = pt.matcher(newStr);
  6.  
  7. if(mt.find()){
  8. System.out.println("String-->" + newStr + "  1-->" +mt.group(1) + "   2-->"+mt.group(2)+ "  3-->" +mt.group(3) + "   4-->"+mt.group(4) + "  5-->" +mt.group(5) + "   6-->"+mt.group(6)+ "  7-->" +mt.group(7) + "   8-->"+mt.group(8));
  9. }
  10.  


но если строка другая то mt.find() - ложь и разбор не происходит.

Может подскажите, правильное выражение и его применение.

Спасибо.
 
 Top
duhon
Отправлено: 22 Апреля, 2014 - 17:06:17
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Нояб. 2011  


Помог: 5 раз(а)




java незнаю, но гипотетически использовать проще регулярку, и while
CODE (htmlphp):
скопировать код в буфер обмена
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3.  
  4. public class RegexMatches
  5. {
  6.     private static final String REGEX = "(\\d{1,2}):(\\d{1,2})";
  7.     private static final String INPUT = "2:4 (1:0, 2:0, 2:0)";
  8.  
  9.     public static void main( String args[] ){
  10.        Pattern p = Pattern.compile(REGEX);
  11.        Matcher m = p.matcher(INPUT);
  12.        int count = 0;
  13.  
  14.        while(m.find()) {
  15.          count++;
  16.          System.out.println("Match number "+count);
  17.          System.out.println("1--> "+m.group(1));
  18.          System.out.println("2--> "+m.group(2));
  19.       }
  20.    }
  21. }

Результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Match number 1
  2. 1--> 2
  3. 2--> 4
  4. Match number 2
  5. 1--> 1
  6. 2--> 0
  7. Match number 3
  8. 1--> 2
  9. 2--> 0
  10. Match number 4
  11. 1--> 2
  12. 2--> 0


А поповоду букв вопрос непонятен.

(Отредактировано автором: 23 Апреля, 2014 - 10:54:25)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Другие языки программирования »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB