Захватывайте пробелы в переносимых символах и удаляйте их, вероятно, с помощью RegEx - PullRequest
1 голос
/ 24 марта 2020

Пока у меня есть это: https://regexr.com/511fs, но оно не захватывается только внутри [], я, наверное, знаю почему, но не нашел лучшего способа сделать это в данный момент.

Пример строки У меня есть:

<s f x> <n o r e p e a t : 1> [ S h a t t e r i n g G l a s s ] <s f x> <n o r e p e a t : 1> [ S h a t t e r i n g G l a s s ] <s f x> <n o r e p e a t : 1> [ B r e a k i n g C e r a m i c s ] <s f x> <n o r e p e a t : 1> [ S h a t t e r i n g c e r a m i c s ] <s f x> <n o r e p e a t : 1> [ S h a t t e r i n g m o n i t o r ] <s f x> [ M e l o n S p l a t ] <s f x> [ M e l o n S p l a t ]

Я пытаюсь в принципе, сейчас я пытаюсь удалить пробелы только внутри скобок []. Но я терплю неудачу и нуждаюсь в помощи, как это сделать, я не нашел способ сделать это.

Кажется, что у каждой буквы есть пробел, а после него я пытаюсь удалить.

Результат должен быть следующим:

[Shattering Glass]

, но с другими вещами означает, что это будет выглядеть так, это конечный результат

<sfx> <norepeat:1> [Shattering Glass]

в качестве примера.

Подходит ли RegEx для этого, я использую онлайн-инструменты. Или есть другой простой способ?

1 Ответ

0 голосов
/ 24 марта 2020

В тестере регулярных выражений, который поддерживает регулярные выражения PCRE, вы можете использовать

(?:\G(?!\A)|[[<])[^][<>\s]*\K\s+(?=[^][<>]*[]>])

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

Подробно

  • (?:\G(?!\A)|[[<]) - либо конец предыдущего успешного совпадения (\G(?!\A)), либо (|) a [ или < char ([[<])
  • [^][<>\s]* - любые 0+ символов кроме ], [, <, > и пробелов
  • \K - оператор сброса соответствия, который отбрасывает текст, найденный так далеко от соответствия буфер памяти
  • \s+ - 1+ пробелов
  • (?=[^][<>]*[]>]) - сразу справа, должно быть 0+ символов, отличных от ], [, <, >, а затем > или ].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...