2011-01-30 2 views
1

Я просто хочу, чтобы добавить что-то в начале каждой строки и в конце каждой строки:Groovy GString, многострочное регулярное выражение - как подсчитать количество строк?

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 строки?

Спасибо.

+0

Может быть вам просто нужно заменить '\ n' с' '\ n'' , и полоса '' 'после этого? – YOU

ответ

1

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

def mystring=""" 
hello 
world 
""" 

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

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

put ''; 
put 'hello'; 
put 'world'; 
+0

изменение '(. *?)' To '([^ \ n] +)' пропустит пустые строки. – YOU