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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемма с составлением Pattern 
:(
    Опции темы
jone31
Дата 9.2.2012, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



подскажите, в скрипте есть строка которую нужно проверить на наличие некой подстроки, и если она есть то удалить всю строку...
делал это так:

Код

Pattern p = Pattern.compile("искомая подстрока");
Matcher m = p.matcher(str);
if( m.matches() ) str = "";


не работает...  пише это:
Цитата

Typed variable declaration : Class: Pattern not found in namespace


подскажите как правильно построить шаблон для него?

Это сообщение отредактировал(а) jone31 - 9.2.2012, 21:34
PM MAIL   Вверх
mstalker26
Дата 9.2.2012, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Подойдет? Хотя не ручаюсь, пишу интуитивно
Код

Pattern p = Pattern.compile(".*искомая подстрока.*");
Matcher m = p.matcher(str);
if( m.matches() ) str = "";


P.S. http://www.ibm.com/developerworks/ru/edu/j...d/section5.html
P.P.S. Проблема
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
jk1
Дата 9.2.2012, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Приведите пожалуйста Вашу "искомую подстроку". Скорее всего она содержит неэкранированные служебные символы


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
jone31
  Дата 10.2.2012, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mstalker26 @  9.2.2012,  23:28 Найти цитируемый пост)
Pattern p = Pattern.compile(".*искомая подстрока.*");Matcher m = p.matcher(str);if( m.matches() ) str = "";

выдаёт туже ошибку что и впервом посте.

сделал вот так:
Код

if( str.indexOf("искомая подстрока") >= 0 ) str = "";


всё рабоатет.

теперь другая проблемма:
если указывают в искомой полдстроке что то похожее на патерн: 
Код

if( str.indexOf("(искомая подстрока1)|(искомая подстркоа2)|(искомая подстрока3)") >= 0 ) str = "";


то ничего не рабоатет. :( что не хватает тут, я в регулярках полный кран... 

Это сообщение отредактировал(а) jone31 - 10.2.2012, 07:57
PM MAIL   Вверх
lBugl
Дата 10.2.2012, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

if( str.indexOf("(искомая подстрока1)|(искомая подстркоа2)|(искомая подстрока3)") >= 0 ) str = "";

"то ничего не рабоатет. :( что не хватает тут, я в регулярках полный кран..."

имхо тут не хватает поддержки регулярных выражений методом indexOf().. =)

подстрок много?
Код

if( str.indexOf("(искомая подстрока1) >= 0 || str.indexOf("(искомая подстрока2) >= 0 || str.indexOf("(искомая подстрока3))") >= 0 ) str = "";

PM MAIL   Вверх
Pawl
Дата 17.2.2012, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(jone31 @  10.2.2012,  07:53 Найти цитируемый пост)
если указывают в искомой полдстроке что то похожее на патерн:...

на самом деле так указывать не надо. Как уже говорили, в java нет
Цитата(lBugl @  10.2.2012,  08:08 Найти цитируемый пост)
поддержки регулярных выражений методом indexOf()

Вам нужно скомпилить все Ваши 
Цитата(lBugl @  10.2.2012,  08:08 Найти цитируемый пост)
"(искомая подстрока1)|(искомая подстркоа2)|(искомая подстрока3

как единый паттерн. Приведу простенький пример, как в массиве строк элементы, содержащие числа или знаки препинания заменяются пустыми строками. Надеюсь, это Вам поможет smile
Код

import java.util.*;
import java.util.regex.*;

public class RegExTest1 {
    public static void main(String[] args) {
     String [] ss = {"abc","a2q","22zz","zz,t","ghu54"};
     
        Pattern p = Pattern.compile("\\p{Alpha}*?[\\p{Punct}|\\p{Digit}]+\\p{Alpha}*?");
        
        for (String s : ss) {
            Matcher m = p.matcher(s);
            if( m.matches()) {
                s = "";
            }
            
            System.out.println(s);
     }          
      }
}

P.S. Писал "на коленке", поэтому могут быть неточности, но смысл, думаю, понятен.
P.P.S. Да, и еще раз повторюсь: для анализа строки на соответствие регулярному выражению этого
Код

if( str.indexOf("искомая подстрока") >= 0 ) str = "";

ненужно ВООБЩЕ, ибо все работает и так!



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

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

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


 




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


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

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