Regex дает неверные результаты - PullRequest
0 голосов
/ 28 мая 2019

Работая в Javascript, пытаюсь использовать регулярное выражение для записи данных в строку.

Моя строка выглядит как эта, начиная с левой скобки

['ABC']['ABC.5']['ABC.5.1']

Моя цель - получить каждый фрагмент регулярного выражения в виде фрагмента или массива. Я просмотрел и вижу, что функция соответствия может быть хорошим выбором.

var myString = "['ABC']['ABC.5']['ABC.5.1']";
myString.match(/\[/g]);

Вывод, который я вижу, - это только [для каждого элемента.

Я бы хотел, чтобы массив был таким, например

myString[0] = ['ABC']
myString[1] = ['ABC.5']
myString[2] = ['ABC.5.1']

Какое правильное регулярное выражение и / или функция для получения желаемого результата?

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Если вы просто хотите разделить их, вы можете использовать простое выражение или, что лучше, разделить их:

\[\'(.+?)'\]

const regex = /\[\'(.+?)'\]/gm;
const str = `['ABC']['ABC.5']['ABC.5.1']`;
const subst = `['$1']\n`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

DEMO

0 голосов
/ 28 мая 2019

Вы можете использовать это регулярное выражение с split:

\[[^\]]+

Подробнее

  • \[ - Матчи [
  • [^\]]+ - Совпадает с чем угодно, кроме ] один или несколько раз
  • \] - Матчи ]

let str =  `['ABC']['ABC.5']['ABC.5.1']`

let op = str.split(/(\[[^\]]+\])/).filter(Boolean)

console.log(op)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...