猿问

正则表达式,要怎麽从下一个字开始匹配,而不是从下一个词?

使用正则表达式时,发现匹配都会从以匹配到的词的下一个词开始,请问要怎么让他依照字串index顺序去找查?

比如: "SegmentFault是一个好论坛"

我写正则表达式: [x{4e00}-x{9fa5}]{2}

可以匹配到 : "是一" "个好" "论坛"

但我今天想匹配到 : "是一" "一个" "个好" "好论" "论坛"

请问用什麽方法可以实现?


动漫人物
浏览 285回答 2
2回答

饮歌长啸

不同语言有不同处理方式,在 JavaScript 中,全局匹配的正则会有个 lastIndex 属性可以调整下次匹配的开始位置。const str = "SegmentFault是一个好论坛"const matcher = /[\u4e00-\u9fa5]{2}/gconst result = []while (true) {  const m = matcher.exec(str)  if (!m) { break }   result.push(m[0])   matcher.lastIndex = matcher.lastIndex - m[0].length + 1}console.log(result)
随时随地看视频慕课网APP
我要回答