2011-01-30 60 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 2011-01-30 08:41:20

回答

1

这你想要做什么,我认为:

def mystring=""" 
hello 
world 
""" 

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

至少对我来说,打印出

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

将`(。*?)`改为`([^ \ n] +)`会跳过空行。 – YOU 2011-01-30 11:22:47