加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 正则表达式删除除括号之外的所有空格

发布时间:2020-12-13 22:20:23 所属栏目:PHP教程 来源:网络整理
导读:我一直在努力解决我希望用正则表达式解决的问题. 假设我有一个字符串,可以包含任何字母数字,并且子字符串可能被方括号包围.这些子字符串可以像这样出现在字符串中的任何位置.也可以有任意数量的括号子串. 例子: aaa [bb b] aaa [bbb] ccc [d dd] [aaa] bbb
我一直在努力解决我希望用正则表达式解决的问题.

假设我有一个字符串,可以包含任何字母数字,并且子字符串可能被方括号包围.这些子字符串可以像这样出现在字符串中的任何位置.也可以有任意数量的括号子串.

例子:

> aaa [bb b]
> aaa [bbb] ccc [d dd]
> [aaa] bbb [c cc]

您可以看到某些括号中的子串中有空格,这很好.我现在的主要问题是当我遇到括号外的空格时,如下所示:

> a aa [bb b]

现在我想保留括号内的空格,但在其他地方删除它们.

对于像以下字符串来说,这会变得有点棘手:

> a aa [bb b] c cc [d dd] e ee [f ff]

在这里,我希望返回:

> aaa [bb b] ccc [d dd] eee [f ff]

我花了一些时间阅读不同的reg ex页面关于lookarounds,负面断言等等,这让我头晕目眩.

注意:对于访问此文件的任何人,我并不是在寻找任何涉及嵌套括号的解决方案.如果是这种情况,我可能会像下面提到的一些评论一样务实地做.

解决方法

这个正则表达式应该做的伎俩:

[ ](?=[^]]*?(?:[|$))

只需替换与“”匹配的空格即可.

基本上它所做的只是确保你要移除的空间在它前面有一个“[”,但如果它前面有一个“]”则没有.

只要你没有嵌套的方括号,那就应该有效,例如:

a a [b [c c] b]

因为在这种情况下,第一个“b”之后的空格将被删除,它将变为:

aa [b [c c] b]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读