用换行符捕获空格并删除它们,可能使用RegEx

问题描述 投票:0回答:1

到目前为止,我有: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很好用,我正在使用在线工具。还是还有另一种简单的方法?

regex string edit
1个回答
0
投票

在支持PCRE regex的regex测试器中,您可以使用

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

请参见regex demo

详细信息

  • [(?:\G(?!\A)|[[<])-上一个成功匹配的结束(\G(?!\A))或(|)一个[<字符([[<])]的结束>
  • [[^][<>\s]*-除][<>和空格之外的任何0+个字符
  • [\K-匹配重置运算符,它从匹配存储器缓冲区中丢弃到目前为止匹配的文本]
  • \s+-1+空格
  • [(?=[^][<>]*[]>])-紧接在右边,除了][<>,然后是>]。必须有0+个字符。
© www.soinside.com 2019 - 2024. All rights reserved.