2015-12-01 2 views
1

Это мой код.Нужно java regex, чтобы получить конкретный результат

String parsedValue = "(1234)"; 
if(!parsedValue.equals("")){ 
    parsedValue = parsedValue.replaceAll("\\(*\\)", "");//I can just change the regex but still need to use replaceAll method. 
} 
System.out.println(parsedValue); 

Я получаю результат: (1234
Мой ожидаются выход: 1234
В основном я хочу, чтобы избавиться от скобки на обоих концах. Я не могу использовать какой-либо иной метод, кроме метода replaceAll. Эта часть кода не под моим контролем. Я могу просто изменить регулярное выражение.
Любая помощь очень ценится.

+0

FYI: '\\ (* \\)' означает "ноль или более' '(ы, а затем один') '". Единственная вещь в вашей строке, которая соответствует этому символу ')' в конце. –

ответ

9

Вам нужно только целевых символов в любом месте, использовать только класс символов:

parsedValue.replaceAll("[()]", ""); 

В качестве альтернативы, если вы хотите только целевой символы, которые в начале или в конце, используйте дюбели (^ и $) и чередование (|):

parsedValue.replaceAll("^\\(+|\\)+$", ""); 
+1

Большое спасибо. Динт знал, что это так легко. – user55926

+0

@Casimir вы можете объяснить или дать полезную ссылку, чтобы понять ваше первое выражение регулярного выражения –

+1

@rupesh_padhye: любых основных руководств по регулярному выражению должно быть достаточно. '[...]' является символьным классом и означает «один из этих символов», поэтому '[()] означает« открывающий или закрывающий круглый скобок ». Затем 'replaceAll' будет искать всю строку для круглых скобок и заменять каждую из них пустой строкой. –

Смежные вопросы