如何打印部分第2部分

时间:2011-11-29 18:50:45

标签: regex file groovy line capture

使用Groovy,我希望抓住一个制表符分隔线的两个部分。以示例行为例:

one fish two fish red fish blue fish ----(每个字符标签/t分开)

假设我要打印one,然后我想打印red fish blue

我该怎么做?

或者,假设我要打印one,然后计算red之后的字符数(字数)?或者在two and blue之间?

上一个问题产生了这个回复,用于打印该行的某个部分之后的所有内容:

c = ~/.*red(.*)/

m = line =~ c
if (m) {
println m[0][1]
}

产生fish blue fish,但我对正则表达式的评价不够恰当。我已经尝试了几次迭代,在那里插入/t并修改我的捕获表达式,但我还没弄明白。这是一个三个或四个问题,任何帮助表示赞赏。谢谢!!

1 个答案:

答案 0 :(得分:0)

def a = [:].withDefault{[]}
def b = [:].withDefault{[]}
def c = 0
def d = 0
def e = 0
def f = 0

seuss = "one\tfish\ttwo\tfish\tred\tfish\tblue\tfish"
a = seuss.split (/\t/)

for (i =0; i<a.size(); i++) {
 if (d != 0) {
    c = c + 1
}
if ( a[i] == "red") {
    d = i
}

}

println a[4] + '\t' + c

for (i =0; i<a.size(); i++) {
if ( a[i] == "blue") {
    e = 0
}
 if (e != 0) {
    f = f + 1
}
if ( a[i] == "two") {
    e = i
}


}

println a[0] + '\t' + f