Regex для извлечения строки как внутри, так и снаружи квадратной скобки

значение срока действия, неопределенное в дескрипторе токена.

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
};
0
задан Pshemo 18 January 2019 в 17:53
поделиться

2 ответа

Если у вас не будет вложенных скобок, вы можете попробовать разбить

  • до [ ИЛИ
  • после ]

Это может быть сделано с использованием механизмов обзора .

String yourText = "[Sometext]MoreText[SomeOtherText]";
String[] arr = yourText.split("(?<=\\])|(?=\\[)");
Arrays.stream(arr).forEach(System.out::println);

Вывод:

[Sometext]
MoreText
[SomeOtherText]
0
ответ дан Pshemo 18 January 2019 в 17:53
поделиться

Вы можете использовать это регулярное выражение, чтобы сопоставить данные в соответствии с вашим образцом в посте,

\[(?:[^\]]*)\]|([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]
0
ответ дан Pushpesh Kumar Rajwanshi 18 January 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: