2016-03-31 3 views
0

В настоящее время я хочу извлечь токен, который является содержимым в строковом формате. Я уже видел this topic, но в моем контексте мне не удается извлечь токен. У меня этот код:Java регулярное выражение извлекает специальную строку между двумя строками

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class SOAPParsing { 
    public static void main(String[] args) { 
     String test = "<BinarySecurityToken Id=\"TotoToken\">Kqdsqd/Jxugtqsk6Ws3q3sd54sq6d4q6sd4qs6d4qs6dq6sd98d69qdq9dsq7d98q7sdqdq7qsddq7Mw2RMmhevkJt/4q6sd7qsIRveuTTqdqsa/zxqsdqdqNg==</BinarySecurityToken>"; 
     Pattern pattern = Pattern.compile("BinarySecurityToken\\\\Id=\"TotoToken\">\\s:\\s(.+?)\\</BinarySecurityToken>"); 
     Matcher matcher = pattern.matcher(test); 
     if (matcher.find()) { 
      System.out.println(matcher.group(1)); 
     } else { 
      System.out.println("nothing .."); 
     } 
    } 
} 

Как я могу исправить мою проблему?

Спасибо заранее,

+0

Попробуйте регулярное выражение в некоторых онлайн-инструмент первым, то есть без Java побега. В качестве примера: как вы думаете, '' \\ '(неэкранированная версия) после' BinarySecurityToken' должна совпадать? – Thomas

+0

Спасибо за ваш ответ, но я ничего не получаю –

+0

С одной стороны, часть вашего Regex, \ s: \ s ищет совпадение [whitespace]: [whitespace], которое не отображается в вашей строке. Поэтому, даже если все остальное было правильным (что я сомневаюсь), оно все равно не будет соответствовать. Как сказал Томас, Google «Regex Tester» и заставить шаблон работать до того, как вы начнете заполнять его на Java. – Duston

ответ

1

Попробуйте это в качестве регулярного выражения:

"<BinarySecurityToken Id=.*>(.*)</BinarySecurityToken>"