Что такое регулярное выражение для поиска строки между "" - PullRequest
2 голосов
/ 18 июня 2010

У меня есть следующая строка:

"http: 172.1."= (10, 1,3);

"http: 192.168."= (15, 2,6);

"http: 192.168.1.100" = (1, 2,8);

Строка внутри "" является тегом, а inside () - значением предыдущего тега.Какое регулярное выражение мне вернет: Tag: http: 172.1.Значение: 10, 1,3

1 Ответ

2 голосов
/ 18 июня 2010

Это регулярное выражение

"([^\"]*)"\s*=\s*\(([^\)]*)\)*.

возвращает текст между кавычками "" в качестве группы 1 и текст в скобках () в качестве группы 2.

Примечание: при сохранении в виде строки вам нужно будет экранировать символы кавычек и удвоить косую черту. Очень быстро становится нечитаемым - вот так:

"\"([^\\\"]*)\"\\s*=\\s*\\(([^\\)]*)\\)*."

РЕДАКТИРОВАТЬ: По запросу, вот пример использования:

   Pattern p = Pattern.compile("\"([^\\\"]*)\"\\s*=\\s*\\(([^\\)]*)\\)*.");
   // put p as a class member so it's computed only once...

   String stringToMatch = "\"http://123.45\" = (0,1,3)";
   // the string to match - hardcoded here, but you will probably read 
   // this from a file or similar
   Matcher m = p.matches(stringToMatch);
   if (m.matches()) {
      String url = p.group(1);    // what's between quotes
      String value = p.group(2);   // what's between parentheses
      System.out.println("url: "+url);   // http://123.45
      System.out.println("value: "+value); // 0,1,3
   }

Подробнее см. В руководстве Sun - Регулярные выражения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...