在Scala中拆分正则表达式保持分隔符

时间:2016-11-08 11:15:14

标签: java regex string scala

我尝试使用正则表达式将字符串拆分为一些规则:

  • 字符串应拆分为2,第一部分至少包含2个字符
  • 第二部分由以第一个数字开头的所有字符组成(在第二个字符之后)

e.g。 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)

正确的正则表达式是什么,有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

最好在span上使用splitAtString方法。

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

第一个val在第二个字符后分割输入。 第二个val在找到数字后立即拆分输入。

答案 1 :(得分:0)

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

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