Я пытаюсь написать программу Server-Client. Я могу отправить текст протокола и получить текст правильно. Но когда я пытаюсь разобрать текст, у меня проблема с классом Matcher. Потому что он соответствует только первой строке. Итак, как я могу найти правильный текст и разбор текста. Я думаю, что Matcher не пытается сопоставить другую строку. Если это ошибка, как я могу ее исправить, или я собираюсь разделить каждую строку, а затем попытаюсь разобрать.Разбор абзаца протокола с помощью сокета?
пример ниже, я не могу соответствовать строке на выражение.
String veri ="SIP/2.0 200 OK\r\n"
+"Via: SIP/2.0/UDP 10.10.10.34:5060;branch=z9hG4bK3834f681a;received=10.10.10.17\r\n"
+"From: <sip:[email protected]>;tag=as153459088\r\n"
+"To: <sip:[email protected]>;tag=as6163450a5a\r\n"
+"Call-ID: [email protected][::1]\r\n"
+"CSeq: 18368 REGISTER\r\n"
+"Server: Asterisk PBX 11.3.0\r\n"
+"Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH\r\n"
+"Supported: replaces, timer\r\n"
+"Expires: 120\r\n"
+"Contact: <sip:[email protected]:5060>;expires=120\r\n"
+"Date: Sat, 29 Jun 2013 14:00:50 GMT\r\n"
+"Content-Length: 0";
//veri="To: <sip:[email protected]>;tag=34dgd\r\n";
Pattern p1 = Pattern.compile("^To\\: (.*);tag=(.*)$");
Matcher m = p1.matcher(veri);
if(m.find()){
System.out.println(m.group(1).trim());
}
Благодарим Вас за помогает
Прежде всего, спасибо за ответ. когда я компилирую, я не могу получить правильные предложения. он по-прежнему не пытается сопоставлять другие строки. İ попробуй, чтобы найти, где я неправ, здесь http://www.vogella.com/articles/JavaRegularExpressions/article.html. но не могу найти. – Acablack
@Acablack. Извините, отредактировал ответ. Пропустил флаг '(? M)'. Теперь это сработает. –
oww Да, это для теста, почему он не подходит для других строк. Спасибо за Пс. И да, он работает с (м) флагом. Но я кое-что удивляюсь. Когда я устанавливаю точку останова на println и вижу m.find(), она говорит false. почему он становится ложным после чтения истины. это странно. – Acablack