Обычно плохая идея анализировать структурированные данные с помощью регулярных выражений, но если вы намерены пойти по этому пути, то вот вам:
"(\d+)"\s*,\s*(?="enrollable_type":\s*"Enrollment")
Предполагается, что entrollable_type
всегда следует за enrollable_id
и что все указано в кавычках с небольшим учетом дисперсии в пустом пространстве. Вы должны быть в состоянии обрабатывать немного больше отклонений, если это необходимо, например, если вы не уверены, можете ли вы зависеть от ключей или данных, которые цитируются (["']?
). Однако, если вы можете зависеть от порядка свойств (например, если они вводятся перед идентификатором), вам следует отказаться от использования регулярного выражения.
Вот пример работы в JavaScript
const text = `{ "id": "3452", "enrollable_id": "3452", "enrollable_type": "Enrollment" } { "id": "3453", "enrollable_id": "3453", "enrollable_type": "Task" } { "id": "3454", "enrollable_id": "3454", "enrollable_type": "Enrollment" } { "id": "3455", "enrollable_id": "3455", "enrollable_type": "Task" }`;
const re = /"(\d+)"\s*,\s*(?="enrollable_type":\s*"Enrollment")/g;
var match;
while(match = re.exec(text)) {
console.log(match[1]);
}