2013-12-05 3 views
0

У меня такой сценарий:Как получить только символы между `(` и `)`, используя регулярное выражение?

A= add(1a,2b,3c,4d) Теперь я хочу только значения внутри скобок. Как я могу это сделать? Может кто-нибудь мне помочь.

Я попытался с помощью этого:

replaceAll("\\d",""); Она устранила все целые числа, но я хочу, чтобы получить символ внутри кронштейна с запятыми.

Например: a,b,c,d

+2

может существовать Скобки в фактических значениях а, Ь, с, д? в этом случае регулярное выражение не было бы возможным. – Junuxx

+0

add (a, b, c, d) теперь я хочу удалить символы снаружи и получить символ внутри скобок запятыми.Вывод, который я хочу, это a, b, c, d – user2841300

ответ

1

Образец, который вам нужен: "\\((.*)\\)".

Приведенный ниже код показывает, как использовать этот шаблон, чтобы найти все вхождения элементов, заключенные в скобки во входной строке:

String example = "A= add(a,b,c,d)"; 
Pattern pattern = Pattern.compile("\\((.*)\\)");  
Matcher matcher = pattern.matcher(example); 

while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

распечаток:

a,b,c,d 
2

Вы можете использовать этот Regex:

\\((.*?)\\)

Если вы хотите, чтобы извлечь символы без ,, вы можете использовать String#split.

Ваше решение не работает, потому что вы делаете что-то неактуальное. Вы заменяете все цифры "", что означает, что вы их удаляете.

Другое решение:

String myStr = str.split("\\(|\\)")[1]; 

Если строка A= add(1a,2b,3c,4d), после того, как регулярное выражение, вы получите 1a,2b,3c,4d. Если вы не хотите int s, используйте replaceAll.

+0

Да, я заменяю целые числа нулевым, и я хочу, чтобы символы внутри скобки были запятыми – user2841300

+0

Я получаю ответ как добавление a, b, c, d – user2841300

+0

Не могли бы вы дать мне ясное решение – user2841300

1

\(([^\)]*)\) вернет в первую группу "a,b,c,d".

3
([0-9()]|.*(?=\()) 

[0-9()] Это будет соответствуют цифрам и скобкам

.*(?=\() Это будет соответствовать перед открывающей скобой

| в среднем действует как OR, например. сопрягать (THIS | THIS)

В вашем случае с заменой этого A= add(1a,2b,3c,4d) станет a,b,c,d

Test здесь и выберите вкладку заменить в верхних http://gskinner.com/RegExr/

+1

+1, но мне потребовалось некоторое время, чтобы понять, что вы делаете. Вы можете сделать свое намерение немного более очевидным, настроив его на '([0-9()] + | ^. * (? = \())'. Добавление '+' и '^' не изменить то, что соответствует, и в качестве дополнительного бонуса делает регулярное выражение более эффективным. –

+0

Прохладный спасибо, что я всегда стараюсь улучшить :-) – Srb1313711

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