У меня есть следующая тестовая строка, с которой я работаю:
__level__:,Undergraduate,;__subject__:,Maths,Art,;
На самом деле это строковый объект { level: ["Undergraduate"], subject: ["Maths", "Art"] }
, который я решил преобразовать в строку и использовать регулярное выражение может быть быстрее, чемцикл по каждому уровню | субъекту и каждому значению в этих свойствах.
Я могу сопоставить одно значение в списке свойств (например, уровень), например:
(?=(__subject__:[^;]*(,Maths,).*?;))
И я могусопоставьте два примерно так:
(?=(__subject__:[^;]*(,Maths,).*?;))(?=(__subject__:[^;]*(,Art,).*?;))
Однако я не могу гарантировать порядок, в котором будут уровни и списки тем.Ниже также возможно:
__subject__:,Maths,Art,;__level__:,Undergraduate,;
Обратите внимание, что я поставил предмет перед уровнем сейчас.Теперь регулярное выражение не совпадает.Я довольно новичок, чтобы смотреть в будущее, поэтому я не могу понять, что я сделал неправильно.Буду признателен за любую помощь по этому вопросу.
Я также хочу объединить сопоставляемые свойства, поэтому что-то вроде:
(?=(__level__:[^;]*(,Undergraduate,).*?;))(?=(__subject__:[^;]*(,Maths,).*?;))(?=(__subject__:[^;]*(,Art,).*?;))
.. у меня тоже не работает, но япытаясь сопоставить два значения из свойства субъекта и значение из свойства уровня.Опять же, я не могу гарантировать порядок свойств (например, уровень, предмет) и / или значений (например, математика, искусство или искусство, математика)