正则表达式数据值 Javascript 空白

我正在尝试为我收到的数据添加正确的空格。目前它显示这样

没有开始

ReadyforPPPD审查

这是我正在使用的代码

.replace(/([A-Z])/g, '$1')

“NotStarted”显示正确的“Not Started”,但“ReadyforPPPDReview”显示“Readyfor PPPD Review”,它应该看起来像这样“Ready for PPPD Review”

使用一个正则表达式或函数来处理这两种情况的最佳方法是什么?


qq_笑_17
浏览 125回答 1
1回答

GCT1015

你需要一个 NLP 引擎来正确处理这个问题。以下是两种使用简单正则表达式的方法,它们都有局限性:1.使用停用词列表我们盲目地在停用词前后添加空格:var str = 'NotStarted, ReadyforPPPDReview';var wordList = 'and, for, in, on, not, review, the'; // stop wordsvar wordListRe = new RegExp('(' + wordList.replace(/, */g, '|') + ')', 'gi');var result1 = str  .replace(wordListRe, ' $1 ') // add space before and after stop words  .replace(/([a-z])([A-Z])/g, '$1 $2') // add space between lower case and upper case chars  .replace(/  +/g, ' ') // remove excessive spaces  .trim(); // remove spaces at start and endconsole.log('str:     ' + str);console.log('result1: ' + result1);正如您可以想象的那样,停用词方法有一些严重的局限性。例如,单词formula input会导致for mula in put.1.使用映射表映射表列出了需要分隔的单词(不涉及药物),如以下代码片段所示:var str = 'NotStarted, ReadyforPPPDReview';var spaceWordMap = {  NotStarted: 'Not Started',  Readyfor:   'Ready for',  PPPDReview: 'PPPD Review'  // add more as needed};var spaceWordMapRe = new RegExp('(' + Object.keys(spaceWordMap).join('|') + ')', 'gi');var result2 = str  .replace(spaceWordMapRe, function(m, p1) { // m: matched snippet, p1: first group    return spaceWordMap[p1] // replace key in spaceWordMap with its value  })  .replace(/([a-z])([A-Z])/g, '$1 $2') // add space between lower case and upper case chars  .replace(/  +/g, ' ') // remove excessive spaces  .trim(); // remove spaces at start and endconsole.log('str:     ' + str);console.log('result2: ' + result2);如果您有一个确定的单词列表作为输入,则此方法适用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript