正则表达式删除唯一字符之间不需要的空格

时间:2016-09-07 13:36:29

标签: javascript regex

我们正在使用OCR从图像中提取文本。这个OCR中我最烦人的问题之一就是我有时候不需要空间,因为OCR找到了一个字符之间有很大跟踪的单词。

例如我得到了:

var text = "CHA BLIS 1 ER CRU CONTROLEEC B E A U R O Y C a Chablisienne"

我试着这样做:

test.replace(/([A-Z])\s(?=[A-Z]\b)/, '$1')

但如果我这样做,我得到了结果:

CHA BLIS 1 ER CRU CONTROLEECBEAUROYC a Chablisienne

但预期结果应为:

CHA BLIS 1 ER CRU CONTROLEEC BEAUROYCa Chablisienne

我的绝对需要是将所有单个角色重组,但不要改变其他单词。

如果:

var text = "CHA BLIS 1 ER CRU CONTROLEEC BEAU R O Y C a Chablisienne"

应输出:

CHA BLIS 1 ER CRU CONTROLEEC BEAU ROYCa Chablisienne

在花了几个小时才找到合适的组合后,我没有成功。

ps:大小写之间不一定要区别对待。

2 个答案:

答案 0 :(得分:1)

如果你需要将所有单独的字母粘在一起:

\b([A-Za-z])\s+(?!\w\B)

Live demo

否则使用单个\b字边界标记:

\b([A-Z])\s+(?![^A-Z])

Live demo

答案 1 :(得分:0)

使用word boundary anchors,您可以将搜索范围限制为单个字符:

test.replace(/\b([A-Z]) (?=[A-Z]\b)/i, '$1')

测试live on regex101.com