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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用换行符捕获空格并删除它们,可能使用RegEx相关的知识,希望对你有一定的参考价值。

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

答案

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

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

请参见regex demo

详细信息

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

以上是关于用换行符捕获空格并删除它们,可能使用RegEx的主要内容,如果未能解决你的问题,请参考以下文章

删除所有换行符并在特定文本后添加它们

用于匹配特殊字符的正则表达式没有空格或换行符

java去掉String里面的空格换行符等

谷歌+元描述+换行=可能吗?

linux 如何删除文件中的空格和换行符号并保存到新文件中

在文本区域中捕获换行符(换行符、换行符)字符