Форум программистов, компьютерный форум CyberForum.ru

Регулярное выражение - Java ME

Восстановить пароль Регистрация
 
Cuda1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 64
08.10.2014, 19:19     Регулярное выражение #1
Здравствуйте. Есть такая строка
Java
1
 temp="{newsid=10, created=2014-10-06 11:28:35, title=bla bla bla}";
Мне требуется из нее получить значение newsid. т.е. 10. Чтобы его получить я написал такое выражение:
Java
1
String[] strs = temp.split("[+\\(newsid=)\\,+]");
Но проблема в том, что оно работает только если newsid стоит на первом месте в строке, если его поставить на вместо created или title в исходной строке, то оно не работает. В регулярных выражениях не силен. Можете подсказать, что именно надо передать в split, чтобы получить значение newsid? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2014, 19:19     Регулярное выражение
Посмотрите здесь:

регулярное выражение... PHP
Регулярное выражение PHP
Регулярное выражение JavaScript
Регулярное выражение PHP
JavaScript Регулярное выражение
Java SE Регулярное выражение и \
C# регулярное выражение
Регулярное выражение Perl
Регулярное выражение C#
PHP Регулярное выражение
JavaScript Регулярное выражение
Регулярное выражение Perl

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1867 / 1601 / 492
Регистрация: 12.05.2014
Сообщений: 5,792
Завершенные тесты: 1
08.10.2014, 19:36     Регулярное выражение #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну как вариант, можно сделать так
Java
1
2
3
4
5
6
        String temp = "{newsid=10, created=2014-10-06 11:28:35, title=bla bla bla}";
        Pattern p = Pattern.compile("newsid=(\\d++),");
        Matcher m = p.matcher(temp);
        while (m.find()) {
            System.out.println(m.group(1));
        }
Циклом проходит всю строку и выводит все вхождения на тот случай, если их > 1
Cuda1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 64
08.10.2014, 19:46  [ТС]     Регулярное выражение #3
Забыл сказать, что желательно, чтобы значение newsid было всегда доступно по одному и тому же индексу массива strs[i], независимо от позиции newsid в строке.

Добавлено через 9 минут
Цитата Сообщение от Паблито Посмотреть сообщение
ну как вариант, можно сделать так
мне нужно чтобы в итоге можно было обратиться к элементу массива, который имеет значение newsid.
turbanoff
Модератор
 Аватар для turbanoff
3852 / 3587 / 422
Регистрация: 18.05.2010
Сообщений: 9,040
Записей в блоге: 10
Завершенные тесты: 1
08.10.2014, 20:45     Регулярное выражение #4
Cuda1, ну запишите результаты, которые вам выдает Matcher в массив. Какие проблемы...
Cuda1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 64
08.10.2014, 21:56  [ТС]     Регулярное выражение #5
Я сделал так:
Java
1
2
3
4
5
6
 String temp = "{created=2014-10-06 11:28:35, title=bla bla bla, newsid=10}";
        Pattern p = Pattern.compile("newsid=(\\d++),");
        Matcher m = p.matcher(temp);
        while (m.find()) {
                 id = (m.group(1));
        }
id пустая потому что newsid стоит на последнем месте в строке. В во всех остальных случаях работает. Как нужно дополнить выражение тогда?

Добавлено через 35 минут
UPD
Java
1
Pattern p = Pattern.compile("newsid=(\\d++)(,|\\})");
немного изменил и все заработало. Всем спасибо.
Паблито
не спать!
1867 / 1601 / 492
Регистрация: 12.05.2014
Сообщений: 5,792
Завершенные тесты: 1
09.10.2014, 09:51     Регулярное выражение #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
так там же можно было просто запятую убрать в регулярном выражении и все (и плюс задвоился у меня)
Java
1
Pattern.compile("newsid=(\\d+)");
Yandex
Объявления
09.10.2014, 09:51     Регулярное выражение
Ответ Создать тему
Опции темы

Текущее время: 15:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru