regex - 捕获包装字符中的空格并删除它们,可能使用 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 正则表达式的正则表达式测试器中,您可以使用
(?:\G(?!\A)|[[<])[^][<>\s]*\K\s+(?=[^][<>]*[]>])
请参阅正则表达式演示。
细节
(?:\G(?!\A)|[[<])
- 上一次成功匹配的结束 (\G(?!\A)
) 或 (|
) a[
或<
char ([[<]
)[^][<>\s]*
]
- 除,[
,<
,>
和空格之外的任何 0+ 个字符\K
- 匹配重置运算符,从匹配内存缓冲区丢弃到目前为止匹配的文本\s+
- 1+ 空格(?=[^][<>]*[]>])
- 紧靠右边,必须有 0+ 个字符,而不是]
,[
,<
,>
然后是>
or]
。
推荐阅读
- javascript - Javascript,一个简单的递归函数
- javascript - 在 sequelize node.js 中添加关联与添加自定义外键列
- arrays - Ruby 中的 Include 方法应用于数组
- javascript - 三元运算符不适用于角度
- html - 固定标题滚动表 - 对齐大小问题
- mysql - 如何检查变量是否为空,如果为空则将其设置为零
- javascript - 单击 mat-button 隐藏一个组件并显示另一个 Angular 9
- tensorflow - BiLSTM + Conv1D 模型有什么问题?连接错误
- linux - 尝试打印整数时出现“分段错误”
- javascript - 卡在 javascript.working 与 html 画布中