Регулярное выражение для возврата слова, присутствующего в 1-ых заключенных в скобки - PullRequest
0 голосов
/ 08 октября 2010

Пример:

  1. ((UINT32)((384UL*1024UL) - 1UL)) должен вернуть «UINT32»
  2. (char)abc должен вернуть «char».
  3. ((int)xyz) должен вернуть «int".

Ответы [ 2 ]

4 голосов
/ 08 октября 2010
    Pattern p = Pattern.compile("\\(([^()]*)\\)");
    String[] tests = {
            "((UINT32)((384UL*1024UL) - 1UL))",
            "(char)abc",
            "((int)xyz)"
    };

    for (String s : tests) {
        Matcher m = p.matcher(s);
        if (m.find())
            System.out.println(m.group(1));
    }

Печать

UINT32
char
int

Объяснение регулярного выражения:

  • \\( Начните с (
  • ( начать захват группы
  • [^()]* все, кроме ( и ) 0 или более раз
  • ) группа захвата конца
  • \\) заканчиваются ).

Использование регулярных выражений немного излишне. Вы также можете сделать

int close = s.indexOf(')');
int open = s.lastIndexOf('(', close);
result = s.substring(open+1, close);
0 голосов
/ 08 октября 2010
Pattern p = Pattern.compile("\\(([^\\(\\)]+?)\\)");
Matcher m = p.matcher(input);
if (m.find())
  result = m.group(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...