Проблема с регулярным выражением replaceAll

Я пытаюсь превратить a/b/c.x.y в abc. Однако, похоже, проблема с моим регулярным выражением, особенно с '\\.*'.

 "a/b/c.x".replaceAll( "/|\\.*", "" );

дает:

 "abcx"

Любое понимание было бы здорово, спасибо!


person JJRhythm    schedule 24.08.2012    source источник
comment
Это единственный формат, в котором он когда-либо будет? Потому что a/b.x/c потребует другой логики.   -  person TheZ    schedule 24.08.2012


Ответы (2)


Вы заменяете любую косую черту или «любое количество точек» пустой строкой.

Я подозреваю, что вы имеете в виду любую косую черту или «точку, за которой следует любое количество любых символов», что будет:

replaceAll("/|\\..*", "");

Это, безусловно, работает для меня с образцом значения.

person Jon Skeet    schedule 24.08.2012
comment
Только то, что я печатал. Правило не ясно из вопроса, но * подразумевает, что это то, к чему стремился ОП. - person David M; 24.08.2012

Текущее регулярное выражение соответствует косой черте ИЛИ нулю или более точкам. Я предполагаю, что вы хотите сопоставить косую черту ИЛИ точку плюс что-либо после нее. Для этого вы хотите

"/|\\..*"
person murgatroid99    schedule 24.08.2012