Замена символов, полученных из javascript

Я делаю программу, которая извлекает все изображения из набора flickr. Я нашел в коде большую строку с каждой ссылкой на картинку, проблема в следующем:

Ссылки имеют следующий формат:

https:\/\/c2.staticflickr.com\/4\/3925\/14562233192_3fe2b8fe1b_s.jpg

но я не могу удалить символ «\», несмотря на использование escape-последовательности «\».

Мой код замены выглядит следующим образом, ret содержит много ссылок, разделенных '\n':

ret =ret.replaceAll("\\", "");

что в мире я забываю?

Моя ошибка stackTrace такова:

 Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal      error near index 1
 \
 ^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)

person Kaostias    schedule 17.09.2014    source источник


Ответы (2)


используйте 4 слэша вместо 2. Вот так - ret =ret.replaceAll("\\\\", ""). Вам нужен 1 для java, один для механизма регулярных выражений и два для его буквального анализа (удаление специального значения).

person TheLostMind    schedule 17.09.2014
comment
Ты мгновенно и навсегда мой любимый человек в мире - person Kaostias; 17.09.2014
comment
@Kaostias - рад, что смог помочь: P - person TheLostMind; 17.09.2014
comment
Истинный! Регулярное выражение используется в качестве входных данных в repeatAll docs.oracle.com/javase/7/docs/api/java/lang/, поэтому недостаточно один раз экранировать его, нужно убедиться, что регулярное выражение не собирается избежать этого тоже ха-ха. Проверьте некоторые полезные функции, такие как Matcher.quoteReplacement docs.oracle.com/javase/7/docs/api/java/util/regex/ и Pattern.quote docs.oracle.com/javase/7/docs/api/java/util/regex / - person unmultimedio; 17.09.2014

\ — это специальный символ в регулярных выражениях, который используется для экранирования других специальных символов. Таким образом, чтобы соответствовать \, вам нужно, чтобы ваше регулярное выражение было \\. Поскольку вам нужно снова экранировать обратную косую черту (на этот раз для строки Java), вам нужно вызвать ret =ret.replaceAll("\\\\", "");.

person Sizik    schedule 17.09.2014
comment
Если вы читали, это именно то, что я сделал, но спасибо за попытку. - person Kaostias; 17.09.2014
comment
Вау, я определенно сделал опечатку там. Исправил это с помощью 4``s. - person Sizik; 17.09.2014