chelaxe
@chelaxe
инженер-программист

Как создать регулярное выражение на JAVA для блока из нескольких строк?

Есть следующий текст:

!re
=.id=*1
=.nextid=*2
=name=script1
=owner=admin
=policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api
=run-count=0
=source=
=invalid=true


Нужно получить строку:
script1


Делаю так:

Pattern p = Pattern.compile("^.*name=(.*)$", Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = p.matcher(str);

В m.group(1) лежит:

script1
=owner=admin
=policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api
=run-count=0
=source=
=invalid=true


Если Pattern p = Pattern.compile("^.*name=(.*)$", Pattern.MULTILINE);

То ничего не получаю... Что то я запутался в конец.
  • Вопрос задан
  • 2962 просмотра
Решения вопроса 1
@bimeg
Звездочка нужна не жадная во втором случае.

Pattern p = Pattern.compile("^.*name=(.*?)$", Pattern.MULTILINE | Pattern.DOTALL);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
chelaxe
@chelaxe Автор вопроса
инженер-программист
Pattern p = Pattern.compile("^.*name=(.*)\n=owner.*$", Pattern.MULTILINE | Pattern.DOTALL);

Вот так получилось, но это явно как то криво...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы