Regexp, как установить любое количество символов, кроме '|' необходимо? - PullRequest
1 голос
/ 23 апреля 2020

Это строка:

[randstr: sdfsdfds|dsfsdf sdfds 43rew|fds, 1-1]

Эта строка может встречаться в тексте. Это мое регулярное выражение, которое я пытаюсь:

`\[(randstr|randstrFixed):(\s+)?\|(.+)(\s+)?,(\s+)?[\d]+-[\d]+]`

Основная цель установить шаблон: sdfsdfds|dsfsdf sdfds 43rew|fds - здесь могут быть любые символы, но хотя бы один '|' необходимо. Такое требование, потому что в тексте может встречаться другая похожая строка, такая как [randstr: A-Z, 2-4]

Дополнительные пояснения:

https://regex101.com/r/1BNzA4/2/ - вот пример текста и регулярное выражение из @Wiktor Stribiżew

Там вы можете изменить текст, теперь «шаблон» начинается с [->, поэтому в регулярном выражении я должен сказать, что [-> не должно произойти.

1 Ответ

2 голосов
/ 23 апреля 2020

Вы можете использовать

\[randstr(?:Fixed)?:\s*[^][|]*\|[^][]*,\s*\d+-\d+]

См. Демонстрационную версию регулярного выражения RE2

Подробности

  • \[ - [ char
  • randstr(?:Fixed)? - randstr или randstrFixed
  • :\s* - двоеточие и 0+ пробелов
  • [^][|]* - 0+ символов кроме [, ] и |
  • \| - | char
  • [^][]* - 0+ символов кроме [ и ]
  • ,\s* - запятая и 0+ пробелов
  • \d+-\d+ - 1+ цифр, -, 1+ цифр
  • ] - ] char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...