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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> regex, строка не содержит посл-ти символов, Именно регексами проверить 
V
    Опции темы
admin82
Дата 4.3.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем здравствуйте. 
Надо проверить, чтобы строка не содержала в себе другой подстроки. 
[^abc]    Any character except a, b, or c (negation) -- не подходит ведь, там abc -- это перечисление символов.

Надо именно шаблон, который потом сможет съесть 
Код

public boolean matches(String regex)

т.к. это строка конфига, которую должна потом обработать универсальная функция
Заранее спасибо за советы
PM MAIL   Вверх
admin82
Дата 4.3.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Облегчим задание -- надо просто чтобы строка не была равна другой заданной строке

Напоминаю во избежание всяких там equals -- это должен быть regex

Это сообщение отредактировал(а) admin82 - 4.3.2008, 16:04
PM MAIL   Вверх
Eric_Cartman
Дата 4.3.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



если задана подстрока "substring", разве решение не будет выглядеть следующим образом:
Код

String string;
...
if (!string.matches(".*substring.*")) {
// все отлично - не содержит подстроки
...
}
...


Это сообщение отредактировал(а) Eric_Cartman - 4.3.2008, 22:50
PM MAIL   Вверх
w1nd
Дата 5.3.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



admin82, regexp не даёт такой возможности. Единственный костыль - это lookahead/lookbehind. Например, можно искать строку, содержащую некое ключевое слово, но не содержащее до/после некоторой последовательности. Например:

(?<!(abc))keyword - вернёт true, если слева от keyword нет abc

В java 1.5, правда, был баг, который позволял реализовать нужный вам функционал, но в 1.6 его пофиксили smile

Это сообщение отредактировал(а) w1nd - 5.3.2008, 01:47


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
nornad
Дата 5.3.2008, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

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



w1nd, можно пример бага из полторушки? Для общего развития. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Kangaroo
Дата 5.3.2008, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(nornad @  5.3.2008,  01:56 Найти цитируемый пост)
w1nd, можно пример бага из полторушки? Для общего развития. 

Ага, и мне интересно.


--------------------
Lost....
PM MAIL MSN   Вверх
w1nd
Дата 5.3.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

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



Там вот такой штук - [^\Qabc\E] - отработал бы именно так, как хочет admin82.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
admin82
Дата 5.3.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я знал точно, что или строка начинается с запретной подстроки, или все в порядке. Поэтому помогло следующее:
(?!Подстрока).*
Всем спасибо за внимание
PM MAIL   Вверх
niasilil
Дата 5.3.2008, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а почему обязательно regex а не метод из String: 
"test Me please".startsWith("test")
Откуда такое ограничение?


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
admin82
Дата 6.3.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Оттуда, что этот регекс является частью конфиг. строки, которая обрабатывается универсальной, уже написанной фунцкией
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.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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