Как сопоставить повторяющиеся последовательности с помощью регулярных выражений JavaScript

1

Я хочу использовать функцию замены javascript и регулярное выражение для замены частей строки.

У меня есть строка, похожая на это

(x=(1.22|2|3) && za=(hello|world|there|wow)||yy=(2|3))

Конечная цель состоит в том, чтобы превратить это в следующее, используя JavaScript

(x=1.22|2|3 && za=hello|world|there|wow||yy=2|3)

Я пытаюсь использовать метод replace() с регулярным выражением и группой захвата. То, где я застреваю, является регулярным выражением. Я могу захватить что- something=, которое я использую (\w+=) для захвата. Но я не мог понять, как захватить контент в скобках

1.22|2|3
hello|world|there|wow
2|3

Эти значения разделены | может быть строкой, целым числом или десятичной дробью. Я пробовал такие вещи, как -

/(\w*\.?\w+\|\w*\.?\w+)/g
Но это только захватило бы группы "чего-то | чего-то". Таким образом, для "1,22 | 2 | 3" будет зафиксирован только "1,22 | 2". Я пробовал разные варианты этого регулярного выражения и не мог понять, как захватить все '|' содержание с разделителями.

Спасибо заранее.

  • 0
    Попробуйте s = s.replace(/(\w=)\([^()]+)\)/g, "$1$2")
  • 1
    Я думаю, что вы захватываете? Я не понимаю Чтобы перейти от первоначального к вашему результату, похоже, что вы просто удаляете парены?
Показать ещё 5 комментариев
Теги:
sequence

1 ответ

0
Лучший ответ

Вы можете использовать

s = s.replace(/(\w=)\(([^()]+)\)/g, "$1$2");

подробности

  • (\w=) - Группа 1: слово char и a =
  • \( - а ( символ
  • ([^()]+) - Группа 2: один или несколько символов, отличных от ( и )
  • \) - а ) полукокса

Смотрите демо-версию регулярного выражения.

Или, если внутри скобок должен быть символ трубы, используйте

s = s.replace(/(\w=)\(([^()|]+(?:\|[^()|]+)+)\)/g, "$1$2");

Смотрите другую демонстрацию регулярных выражений. Здесь шаблон группы 2 отличается от первого шаблона:

  • [^()|]+ - 1 или более символов, кроме (, ) и |
  • (?:\|[^()|]+)+ - 1 или более повторений
    • \| - трубка
    • [^()|]+ - 1 или более символов, кроме (, ) и |
  • 1
    Спасибо, Виктор. Они оба потрясающие.
  • 0
    Сожалею. Только что сделал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню