значение срока действия, неопределенное в дескрипторе токена.
var tokenDescriptor = new SecurityTokenDescriptor
{
Issuer = _config.GetValidIssuer(),
Audience = _config.GetValidAudience(),
SigningCredentials = new SigningCredentials(_config.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256),
Subject = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString())
}),
// expiration time here...
Expiration = _config.GetExpiration() // etc
};
Если у вас не будет вложенных скобок, вы можете попробовать разбить
[
ИЛИ ]
Это может быть сделано с использованием механизмов обзора .
String yourText = "[Sometext]MoreText[SomeOtherText]";
String[] arr = yourText.split("(?<=\\])|(?=\\[)");
Arrays.stream(arr).forEach(System.out::println);
Вывод:
[Sometext]
MoreText
[SomeOtherText]
Вы можете использовать это регулярное выражение, чтобы сопоставить данные в соответствии с вашим образцом в посте,
\[(?:[^\]]*)\]|([a-zA-Z]+(?:\s+[a-zA-Z]+)*)
В качестве чередования есть два подвыражения, где \[(?:[^\]]*)\]
будет захватывать любой текст, который будет иметь форму [somedata]
и ([a-zA-Z]+(?:\s+[a-zA-Z]+)*)
регулярное выражение будет собирать данные формы somedata
или somedata somemoredata somemoredatafurther
Пример Java коды,
String s = "[Sometext]MoreText[SomeOtherText] I am hoping to get [SomeText], MoreText, [SomeOtherText]";
Pattern p = Pattern.compile("\\[(?:[^\\]]*)\\]|([a-zA-Z]+(?:\\s+[a-zA-Z]+)*)");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
Prints,
[Sometext]
MoreText
[SomeOtherText]
I am hoping to get
[SomeText]
MoreText
[SomeOtherText]