Regex для захвата первых 5 групп и последнего персонажа - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать регулярное выражение, которое будет извлекать первые 5 символов и последний символ в строке независимо от ее размера. Например,

Для FOO:BAR:123FF:FOO:BARF:OO:BAR:1234 или FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234 он захватит шесть групп, что составляет FOO BAR 123FF FOO BAR 1234

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Если ваша строка всегда отформатирована так, я думаю, что лучше использовать split

let a = 'FOO:BAR:123FF:FOO:BAR:FOO:BAR:FOO:BAR:FOO:1234'
let res = a.split(':')
// Remove all between the 5th and the last element
res.splice(5, res.length - 5 - 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))
0 голосов
/ 30 апреля 2020

Вы можете получить все разделенные слова с помощью регулярного выражения ниже:

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"]

Надеюсь, это поможет! :)

...