正则表达式捕获前5组和最后一个字符

问题描述 投票:0回答:2

我正在尝试创建一个正则表达式,无论字符串大小如何,该表达式都会提取字符串中的前5个字符和最后一个字符。例如

对于FOO:BAR:123FF:FOO:BARF:OO:BAR:1234FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234,它将捕获六个组,即FOO BAR 123FF FOO BAR 1234

regex regex-group capturing-group
2个回答
0
投票

您可以使用下面的正则表达式获取所有分隔的单词:

const regex = /[^:]*\w+/g

此后,您可以获得具有以下内容的所有匹配项:

const text = "FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234"
const matches = text.match(regex)

最后删除重复项:

const uniqueArr = Array.from(new Set(matches))
console.log(uniqueArr) // ["FOO", "BAR", "123FF", "FOO", "BAR", "1234"]

希望有帮助! :)


0
投票

如果您的字符串总是这样格式化,我认为最好使用split

let a = 'FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234'
// Select the five first elems and concat with the last
let res = a.split(':').slice(0, 5).concat(a.substr(a.lastIndexOf(':')+1))

console.log(res)

但是如果您真的想使用正则表达式,也可以:

let a = 'FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234'
let regex = /^(\w+):(\w+):(\w+):(\w+):(\w+):.*:(\w+)$/

console.log(regex.exec(a).slice(1))
© www.soinside.com 2019 - 2024. All rights reserved.