java - Scala 中的拆分正则表达式保留分隔符

标签 java regex string scala

我正在尝试使用正则表达式和一些规则来分割字符串:

  • 字符串应分为 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 一旦找到数字就会分割输入。

关于java - Scala 中的拆分正则表达式保留分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485472/

相关文章:

java - 使用 [ :punct:] function in java 的正则表达式

c - 从字符串中删除括号中的文本?

复制字符数有限的字符串

java - 尝试在没有比较器的情况下添加树集中时,StringBuffer 未给出 ClassCastException

java - 如何将文本设置为 ListView 中的多个选定项目

java - 如何避免这种无限的 do-while 循环?

C++ 将字符串与单词进行比较

java - Java 中的视频缩略图

php mongodb '$or' 正则表达式搜索

javascript - 在 javascript 中匹配具有特定模式的所有链接