Регулярное выражение 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 ..");
        }
    }
}

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

Заранее спасибо,


person pi-2r    schedule 31.03.2016    source источник
comment
Сначала попробуйте свое регулярное выражение в каком-нибудь онлайн-инструменте, то есть без экранирования Java. В качестве примера: как вы думаете, что должно соответствовать \\ (версия без экранирования) после BinarySecurityToken?   -  person Thomas    schedule 31.03.2016
comment
Спасибо за ответ, но ничего не понял   -  person pi-2r    schedule 31.03.2016
comment
Во-первых, часть вашего регулярного выражения \s:\s ищет соответствие [пробел]:[пробел], которого нет в вашей строке. Так что даже если бы все остальное было правильно (в чем я сомневаюсь), это все равно не совпало бы. Как сказал Томас, погуглите Regex Tester и заставьте шаблон работать, прежде чем возиться с его набивкой на Java.   -  person Duston    schedule 31.03.2016


Ответы (1)


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

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

person Zach Posten    schedule 31.03.2016