Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные выражения - маленькая загвоздка

552
08 сентября 2007 года
Ivanhoe
373 / / 30.04.2006
Господа, вопрос в следующем.
Java, регекспы. Задача стоит сделать следующую замену:
& -> & (т.е. без изменений)
&^amp; -> &^amp;
Т.е. если стоит мнемокод амперсанда (& ), то не трогаем его, а если вместо amp что-то другое, то заменяем точку с запятой.
Пробовал шаблоны "&^(amp);" и "&[^(amp)];" - не помогает. Не подскажите?
63
08 сентября 2007 года
Zorkus
2.6K / / 04.11.2006
Не работал с регэкспами в яве, но может http://jakarta.apache.org/regexp/index.html поможет? ;)
552
08 сентября 2007 года
Ivanhoe
373 / / 30.04.2006
Ммм... не пойму преимуществ джакартовких RE над сановскими :)

К тому же у меня некоторая специфика задачи - нельзя подключить сторонние либы.

Но в любом случае спасибо :)
355
10 сентября 2007 года
<SCORP>
786 / / 21.10.2006
а я чёт задачу не понял. вернее, примера. можно для тех, кто глубоко в танке ещё раз? :)
552
10 сентября 2007 года
Ivanhoe
373 / / 30.04.2006
Попробую :))

Есть некая строчка (форумный пост), полученная из запроса. Надо в ней избавиться от спецсимволов. Амперсанды я заменяю на & Следующее - точки с запятой. Но заменя поголовно ; на &#59; не прокатит, потому что может заменить ; в последовательности &. Поэтому нужно заменять с умом, точнее игнорировать замену в последовательности &. Вот :)
2
10 сентября 2007 года
squirL
5.6K / / 13.08.2003
какие либо исключения еще есть? или игнорировать совпадение ";" нужно только в последовательности "&"?

и я не понял, на что точку с запятой-то меняем?
552
10 сентября 2007 года
Ivanhoe
373 / / 30.04.2006
Ну допустим, что только одна игнорируемая последовательность.

Заменяем на ее HTML-код.
32K
26 сентября 2007 года
padla
3 / / 19.09.2007
Цитата: Ivanhoe
Ну допустим, что только одна игнорируемая последовательность.

Заменяем на ее HTML-код.


при замене ; проверить не стоит ли передней &amp, если не то заменяем если есть то пропускаем

552
26 сентября 2007 года
Ivanhoe
373 / / 30.04.2006
Очень, конечно, оригинально. Но ключевое слово во всем треде - "регулярные выражения"
32K
27 сентября 2007 года
padla
3 / / 19.09.2007
Я немного не точно выразился. Я имел ввиду ретроспективную проверку.
Она описывается последовательностью символов (?<=) для позитивной и (?<!) для негативной.
Тоесть используя рестроспективную проверку мы можем описать в регулярном выражении, что должно стоять (не должно стоять в случае негативной) перед заменяемым выражением.
Используя выражение
 
Код:
(?<!&amp)(;)
заменяем точку с запятой везде кроме "&amp;"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог