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

avatar
Gleb
1 июля 2021 в 17:21
41
1
0

У меня есть текст

Пример текста (только пример, я не могу показать реальный текст):

some words getServerResponse={go [for {a walk}] goodby }something hello world text={what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}

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

Я пытаюсь использовать этот шаблон: text=(.*) и ожидайте получить из моего текста два элемента в списке:

{what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}
{second[ {text what} i ]want number two}

Неважно, что первый элемент содержит вторую часть, потому что из первого элемента я получаю только то, что находится между первой открытой фигурной скобкой и фигурной скобкой, закрывающей первую:

what[ i want {in curl} ]braces

Но этот шаблон text=(.*) дает мне только один вариант

{what[ i want {in curl} ]braces}, another string text={second[ {text what} i ]want number two}

Как мне получить все совпадения из моего текста в виде элементов списка?

Источник
Pubudu Sitinamaluwa
1 июля 2021 в 17:32
0

Язык вашего вопроса здесь несколько сбивает с толку, и кажется, что вы могли бы приложить больше усилий для изучения некоторых регулярных выражений, прежде чем задавать вопрос здесь. В любом случае, не могли бы вы уточнить, какой именно результат вы ищете?

Gleb
1 июля 2021 в 17:34
0

Ожидаемый результат @PubuduSitinamaluwa во фрагменте кода. Я хочу получить два элемента в финальном списке для каждого "text="

Ответы (1)

avatar
Pubudu Sitinamaluwa
1 июля 2021 в 17:43
1

Предполагая, что все фигурные скобки будут в заданном формате, я придумал это регулярное выражение.

(text=)(\{(\w|\[|\s|\{|\}|\])+)

Это позволит захватить вложенный элемент после каждого text=. Обратите внимание, что я добавил 3 соответствующие группы. 3-ю группу пока можно игнорировать.

Group1 => text=

Group2 => {what[ i want {in curl} ]braces} и {second[ {text what} i ]want number two}

Вы можете использовать сопоставление всех и извлечь вторую группу захвата, чтобы получить желаемый результат.

RegexDemo