Регулярное выражение Java для поиска конкретной строки - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть файл с длинной строкой, и я хотел бы разделить его по определенному элементу, например

String line = "{{[Metadata{"this, is my first, string"}]},{[Metadata{"this, is my second, string"}]},{[Metadata{"this, is my third string"}]}}"

String[] tab = line.split("(?=\\bMetadata\\b)");

Так что теперь, когда я перебираю свою вкладку, я получу строки, начинающиеся со слова: "Metadata", ноЯ хотел бы строки, начинающиеся с:

"{[Metadata"

Я пробовал что-то вроде:

 String[] tab = line.split("(?=\\b{[Metadata\\b)");

, но это не работает.Кто-нибудь может мне помочь, как это сделать, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Вот решение с использованием формального сопоставителя шаблонов.Мы можем попытаться сопоставить ваш контент, используя следующее регулярное выражение:

(?<=Metadata\\{\")[^\"]+

При этом используется проверка вида, чтобы проверить маркер Metadata, заканчивающийся двойной кавычкой.Затем он сопоставляет любой контент вплоть до закрывающей двойной кавычки.

String line = "{{[Metadata{\"this, is my first, string\"}]},{[Metadata{\"this, is my second, string\"}]},{[Metadata{\"this, is my third string\"}]}}";
String pattern = "(?<=Metadata\\{\")[^\"]+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

while (m.find( )) {
    System.out.println(m.group(0));
}

this, is my first, string
this, is my second, string
this, is my third string
0 голосов
/ 20 декабря 2018

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

(?=\{\[Metadata\b)

См. демо на regex101.com .


Обратите внимание, что в Java необходимо экранировать обратную косую черту, чтобы она стала
(?=\\{\\[Metadata\\b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...