Регулярные выражения - маленькая загвоздка
Java, регекспы. Задача стоит сделать следующую замену:
& -> & (т.е. без изменений)
&^amp; -> &^amp;
Т.е. если стоит мнемокод амперсанда (& ), то не трогаем его, а если вместо amp что-то другое, то заменяем точку с запятой.
Пробовал шаблоны "&^(amp);" и "&[^(amp)];" - не помогает. Не подскажите?
http://jakarta.apache.org/regexp/index.html поможет? ;)
Не работал с регэкспами в яве, но может
К тому же у меня некоторая специфика задачи - нельзя подключить сторонние либы.
Но в любом случае спасибо :)
а я чёт задачу не понял. вернее, примера. можно для тех, кто глубоко в танке ещё раз? :)
Есть некая строчка (форумный пост), полученная из запроса. Надо в ней избавиться от спецсимволов. Амперсанды я заменяю на & Следующее - точки с запятой. Но заменя поголовно ; на ; не прокатит, потому что может заменить ; в последовательности &. Поэтому нужно заменять с умом, точнее игнорировать замену в последовательности &. Вот :)
и я не понял, на что точку с запятой-то меняем?
Заменяем на ее HTML-код.
Цитата: Ivanhoe
Ну допустим, что только одна игнорируемая последовательность.
Заменяем на ее HTML-код.
Заменяем на ее HTML-код.
при замене ; проверить не стоит ли передней &, если не то заменяем если есть то пропускаем
Очень, конечно, оригинально. Но ключевое слово во всем треде - "регулярные выражения"
Она описывается последовательностью символов (?<=) для позитивной и (?<!) для негативной.
Тоесть используя рестроспективную проверку мы можем описать в регулярном выражении, что должно стоять (не должно стоять в случае негативной) перед заменяемым выражением.
Используя выражение
Код:
(?<!&)(;)