给出以下输入:
BGM+220+105961-44+9'
DTM+137:20140121:102'
NAD+BY+0048003479::91'
NAD+SE+0000805406::91'
NAD+DP+0048003479::91'
CUX+2:USD+9'
PIA+1+M1PL05883LOT+":BP::92'
PIA+1+927700077001:VP::91'
PRI+AAA:9:::1:PCE'
SCC+1'
QTY+21:10000:PCE'
DTM+2:11022014:102'
PIA+1+M1PL05883LOT+":BP::92'
PIA+1+927700077001:VP::91'
PRI+AAA:9:::1:PCE'
SCC+1'
QTY+21:20000:PCE'
DTM+2:04022014:102'
UNS+S'
UNT++1'
UNZ+1+10596144'
目标是从第一行捕获:
BGM+220+105961-44+9'
“ - ”和“数字结尾”之间的值。在上面的例子中,它将是“44”。
提前致谢
答案 0 :(得分:2)
你可以这样做:
text.tokenize( '\n' ) // split it based on newlines
.head() // grab the first one
.find( /-\d+/ ) // find '-44'
.substring( 1 ) // remove the '-'
实际上,你不需要拆分它,所以只需:
text.find( /-\d+/ )?.substring( 1 )
做同样的事情(因为它是你感兴趣的第一行)
要同时获取-
周围的数字,您可以执行以下操作:
def (pre,post) = text.find( /\d+-\d+/ )?.tokenize( '-' )
assert pre == '105961'
assert post == '44'