Замяна на знаци, получени от javascript

правя програма, която извлича всички снимки от набор от flickr. Намерих в кода голям низ с всяка връзка към картина, проблемът е следният:

Връзките имат следния формат:

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

но не мога да премахна знака „\“, въпреки че използвам последователността за избягване на „\“.

Моят заместващ код е следният, 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, един за regex engine и два, за да го анализирате буквално (премахвайки специалното значение).

person TheLostMind    schedule 17.09.2014
comment
Ти незабавно и завинаги си любимият ми човек на света - person Kaostias; 17.09.2014
comment
@Kaostias - радвам се, че можах да помогна :P - person TheLostMind; 17.09.2014
comment
Вярно! Regex се използва като вход в 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``. - person Sizik; 17.09.2014