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

Java ME (J2ME)

Войти
Регистрация
Восстановить пароль
 
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
#1

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

08.10.2014, 19:19. Просмотров 1166. Ответов 5
Метки нет (Все метки)

Здравствуйте. Есть такая строка
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? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2014, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Регулярное выражение (Java ME):

Регулярное выражение - Java
Добрый день. Не понимаю как получить подстроку из строки, используя регулярное выражение. В строке может быть сколько угодно совпадений,...

Регулярное выражение - C#
Здраствуйте, помогине пожалуйста есть html код : Нужно вытащить слова крассного цвета, пытался делать public string...

Регулярное выражение и \ - Java SE
Собственно пока особо не разбираюсь в RegExp , но код регулярка "+" отказывается искать "\\" public static void main(String args) ...

Регулярное выражение - Perl
есть файл: <body lang=3DRU link=3Dblue = vlink=3Dpurple><div class=3DWordSection1><p = class=3DMsoNormal>=F7=CC=CF=D6=C5=CE=C9=C5...

Регулярное выражение - Java SE
есть строка в ней 5 чисел друг за другом за ними идет точка и пробел:"12345. " нужно проверить чтобы после этой конструкции был хотя бы 1...

Регулярное выражение - C#
Если строка выглядит так, "123;-123;4454;-123123;", то можно продолжать программу, а если "123;-12-3;4вasd5ррова4;-123123;", то нельзя как...

5
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 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
1
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
08.10.2014, 19:46  [ТС] #3
Забыл сказать, что желательно, чтобы значение newsid было всегда доступно по одному и тому же индексу массива strs[i], независимо от позиции newsid в строке.

Добавлено через 9 минут
Цитата Сообщение от Паблито Посмотреть сообщение
ну как вариант, можно сделать так
мне нужно чтобы в итоге можно было обратиться к элементу массива, который имеет значение newsid.
0
turbanoff
Модератор
Эксперт Java
3959 / 3694 / 457
Регистрация: 18.05.2010
Сообщений: 9,276
Записей в блоге: 11
Завершенные тесты: 1
08.10.2014, 20:45 #4
Cuda1, ну запишите результаты, которые вам выдает Matcher в массив. Какие проблемы...
0
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
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++)(,|\\})");
немного изменил и все заработало. Всем спасибо.
0
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,866
Завершенные тесты: 1
09.10.2014, 09:51 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
так там же можно было просто запятую убрать в регулярном выражении и все (и плюс задвоился у меня)
Java
1
Pattern.compile("newsid=(\\d+)");
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2014, 09:51
Привет! Вот еще темы с ответами:

Регулярное выражение - Java SE
Здравствуйте!Как задать регулярное выражение для стороки "DSCN0497 (FILEminimizer).JPG" для java.uti.regex.Pattern.compile.

Регулярное выражение - C#
Не могу разобраться, что означает данное выражение ( - любой символ из скобок, \d - цифра, а вот дальше) \\d+\\d+

Регулярное выражение - PHP
Вытаскивая из строчки, помещаем содержимое в подобные выражения $1, $2... Вопрос, когда не находим того что нас интересует. То есть $1...

Регулярное выражение - Java SE
У меня есть определенный html код. Помогите пожалуйста вытащить через регулярное выражения java указанную ниже часть. Я в этом деле...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
09.10.2014, 09:51
Ответ Создать тему
Опции темы

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