簡體   English   中英

在Scala中分割正則表達式以保持定界符

[英]Split regex in Scala keeping delimiter

我正在嘗試使用正則表達式使用一些規則拆分字符串:

  • 字符串應分為2,第一部分至少包含2個字符
  • 第二部分由所有以第一個數字開頭(第二個字符之后)的字符組成

例如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)

什么是正確的正則表達式,有沒有更簡單的方法?

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

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

第一個val在第二個字符之后分割輸入。 第二個val發現數字就分割輸入。

您可以嘗試以下正則表達式(.{2,}?)([\\d].*)

第一部分匹配任何兩個字符,但嘗試匹配可能的最短序列( ? ),然后下一部分首先尋找一個數字( \\d ),后跟任何字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM