Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать так чтобы Character "\n" не находился, проблема с регами... 
:(
    Опции темы
Nin
Дата 18.12.2004, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Привет всем.

проблема с регами...
никак не могу сделать так чтобы Character "\n" не находился,
Вот есть такой string = "[{ 1],\n{ 2],\n{ 3]]"
в нем нужно наити { 1]
Ищу вот таким выражением: ".\\{\\s+\\d.+"

не берёт smile

вот здесь говорят что надо DOTALL флаг вырубить:
http://java.sun.com/j2se/1.4.2/docs/api/ja...Pattern.html#lt

как это зделать не доганяю...

Заранее благодарен,

Ильдар
PM MAIL   Вверх
Oracle
Дата 18.12.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Цитата
никак не могу сделать так чтобы Character "\n" не находился,

Причем тут \n?
Цитата
не берёт

Ты лучше скажи, какая строка у тебя выдается?Что находит??У меня находит
"[{ 1],", а у тебя что-то не берет.......

А вообще попробуй "\\{\\s+[1]\\]" , у меня находит именно то, что ты ищешь: "{ 1]".

Это сообщение отредактировал(а) Oracle - 18.12.2004, 17:02
PM MAIL   Вверх
Nin
Дата 18.12.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



проблема:
".\\{\\s+\\d.+" ищем в "[{ 1]," == тrue
".\\{\\s+\\d.+" ищем в "[{ 1],\n{ 1],\n{ 1]]" == false

PM MAIL   Вверх
Leopard25
Дата 18.12.2004, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



а сравниваешь через .equals ?
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Oracle
Дата 18.12.2004, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Когда вы научитесь писать подробно?Телепатов тут нет (Эт из правил).

Nin
проблема:
".\\{\\s+\\d.+" ищем в "[{ 1]," == тrue
".\\{\\s+\\d.+" ищем в "[{ 1],\n{ 1],\n{ 1]]" == false

Что это означает??
Ты ищешь в первой строке и находишь то , что нужно, а когда ищешь во второй строке не находишь??
Или то, что ты нашел в первой строке совпадает с "[{ 1]," (выдает true), а то что нашел во второй строке не совпадает с "[{ 1]," (то есть выдает false?) При этом, как спросил Leopard25 сравниваешь через equals()?И при этом если просто выводить искомое, то результат и в первом и во втором будет "[{ 1],"

P.S Проще приведи кусок кода.

Глянь сюда:
Код

import java.util.regex.*;

public class Checker {
   public static void main(String args[]) {
       String str =  "[{ 1],\n{ 1],\n{ 1]]";
        Matcher m = Pattern.compile(".\\{\\s+\\d.+").matcher(str);
       StringBuffer sb = new StringBuffer();
       while(m.find()) {
       for (int j = 0;j <= m.groupCount();j++)
       {
    sb.append(m.group(j));
    }
           System.out.println(sb);
    System.out.println(sb.toString().equals("[{ 1],"));
   }
   }
}

Все правильно работает.

Это сообщение отредактировал(а) Oracle - 18.12.2004, 18:47
PM MAIL   Вверх
Nin
Дата 18.12.2004, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Да как ещё обяснить, вопрос то такой простенькии.

".\\{\\s+\\d.+" ищем в "[{ 1]," == тrue
".\\{\\s+\\d.+" ищем в "[{ 1],\n{ 1],\n{ 1]]" == false

в первом случае: ищу и нахожу.
во втором: ищу и не нахожу.

а мне нужно находить в обоих случаях.
PM MAIL   Вверх
Oracle
Дата 18.12.2004, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Смотри выше.....Попробуй..Результаты скажи....Вроде все находит...Везде все правильно.
PM MAIL   Вверх
Nin
Дата 18.12.2004, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



а целью является доказать что "{" было 3 раза ;)
Код

String reg = ".\\{\\s+\\d.+";   //\\u000A\\{\\s+\\d.+\\u000A\\{\\s+\\d.+
Pattern p = Pattern.compile(reg);
String look = "[{    1],\n{    1],\n{    1]]";
Matcher m = p.matcher(look);
boolean b = m.matches();
System.out.println("Result is: " + b);



Это сообщение отредактировал(а) Domestic Cat - 18.12.2004, 19:20
PM MAIL   Вверх
Oracle
Дата 18.12.2004, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Код

import java.util.regex.*;

public class Checker {
   public static void main(String args[]) {
       String str =  "[{ 1],\n{ 1],\n{ 1]]";
        Matcher m = Pattern.compile("\\{").matcher(str);
       while(m.find()) {
           for(int i = 0; i <= m.groupCount();i++){
               System.out.print(m.group(i));
           }

       }
   }
}


или доказать, что три раза было { 1]?
PM MAIL   Вверх
Nin
Дата 18.12.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



у меня вот это не работает smile
Код



String str =  "[{   1],\n{   1],\n{   1]]";
         Matcher m = Pattern.compile(".\\{.+\\{.+\\{.+").matcher(str);
        StringBuffer sb = new StringBuffer();
 while(m.find()) {
        for (int j = 0;j <= m.groupCount();j++)
         {
      sb.append(m.group(j));
      }
 System.out.println(sb);
      System.out.println(sb.toString().equals("[{ 1],"));

Добавлено @ 19:15
Код

Спасибо, всё работает!!!

       String str =  "[{ 1],\n{ 1],\n{ 1]]";
        Matcher m = Pattern.compile("\\{").matcher(str);
 int i = 0;
       while(m.find()) {
        i ++;
       }

System.out.println(i);



Это сообщение отредактировал(а) Domestic Cat - 18.12.2004, 19:20
PM MAIL   Вверх
Oracle
Дата 18.12.2004, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Если ты хочешь проверить, кол-во "{" то пиши просто //{ как у меня в примеру,глянь выше.
А потом просто проверь кол-во групп.
А как ты хочешь, чтобы у тебя выдало true эта строка
Код

System.out.println(sb.toString().equals("[{ 1],"));

Когда ты ищешь не "[{ 1]," , а "{"
P.S Код постарайся писать правильно, это действительно будет хорошо. Расположение кода, я имею ввиду.
Добавлено @ 19:18
С переменной тоже можно. А можно просто проверить кол-во групп. Mathcer.groupCount().
P.S Что бы ты знал, на всякий случай.Мне кажется так будет код выглядеть более "эффектно."
PM MAIL   Вверх
Domestic Cat
Дата 18.12.2004, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



М
 
Nin, на форуме используется подсветка синтаксиса кода (теги [cоde=jаva][/code]). Такой код удобнее читать.



--------------------

PM   Вверх
Oracle
Дата 18.12.2004, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Решил проблему то?
PM MAIL   Вверх
Nin
Дата 10.1.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 7.6.2004

Репутация: нет
Всего: нет



Привет всем,

Не подскажите как ... (3 точки) найти? тоесть теперь вместо "{" нужно наити "..."

Заранее благодарен,

Ильдар
PM MAIL   Вверх
Oracle
Дата 10.1.2005, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 26.11.2004

Репутация: 1
Всего: 3



Код

import java.util.regex.*;

public class Test {
  public static void main(String args[]) {
      String str =  "[{ 1].\n{ 1].\n{ 1]]";
       Matcher m = Pattern.compile("//.").matcher(str);
/*
*Либо так:Matcher m = Pattern.compile("[.]").matcher(str);
*/
      while(m.find()) {
          for(int i = 0; i <= m.groupCount();i++){
              System.out.print(m.group(i));
          }

      }
  }
}

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.