Groovy GString, регулярное выражение с несколькими строками - как посчитать количество строк? - PullRequest
1 голос
/ 30 января 2011

Я просто хочу добавить что-то в начале каждой строки и в конце каждой строки:

def mystring="""
hello
world
"""
matcher = (mystring =~ /(?ms)^/);
excerpt = matcher.replaceAll("put '");
matcher = (excerpt  =~ /(?ms)$/);
excerpt2 = matcher.replaceAll(" ';");
println excerpt2

Я ожидал получить

  put 'hello';
  put 'world';

Однако я получил

put ' ';
put 'hello ';
put 'world ';
 ';

, что означает "^" после "" ", даже если нет реальной строки. Можно ли сказать, что с помощью (? M) мы создали 3 строки?

Спасибо.

1 Ответ

1 голос
/ 30 января 2011

Это делает то, что вы хотите, я думаю:

def mystring="""
hello
world
"""

matcher = mystring =~ /(?ms)^(.*?)$/
excerpt = matcher.collect{ "put '${it[0]}';" }.join( '\n' )
println excerpt

По крайней мере, для меня это печатает

put '';
put 'hello';
put 'world';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...