2016-11-08 90 views
0

我试图分裂使用正则表达式的一些规则的字符串:拆分正则表达式保持分隔符

  • 该字符串应该被分成2个含至少2个字符的第一部分
  • 的第二部分由所有以第一个数字开头的字符组成(在第二个字符后面)

eg AB1234 = AB和1234,C56789 = C5和6789,ZYX3939Y = ZYX和3939Y

我有这样的正则表达式这是近的工作,但它失去了其分裂的性格:

val t = request.number.split("(?<=.{2})[0-9]{1}", 2)

println(t(0), t(1))

给出:

(AB,234) (C5,789) (EZY,9393Y)

什么是日e正确的正则表达式,有没有更简单的方法来做到这一点?

+0

查看http://ideone.com/3YDnvc。这些代码有多长? –

+0

“(。{2,}?)([\ d]。*)”是什么意思?r – JiriS

回答

2

您最好在String上使用spansplitAt方法。

val (twoFirst, rest) = request.number.splitAt(2) 
val (noNumber, tail) = rest.span(!_.isDigit) 
(twoFirst + noNumber, tail) 

第一个val在第二个字符后分割输入。 第二个val只要找到一个数字就会分割输入。

+0

好而简单! – maloney

0

你可以试试下面的正则表达式(.{2,}?)([\d].*)

第一部分两个任意字符匹配,但试图匹配最短序列可能(?),然后在接下来的部分首先查找,然后任何一个数字(\d)。