正则表达式用于在Scala中最后一行的距离后获取数字

时间:2018-11-28 12:33:33

标签: regex scala parsing

我的行是889¦20457892¦955

我想获取955作为输出,这是我的代码,但是它给出None作为结果

val pattern = "(^¦*)$\\d+".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

这是正确的正则表达式吗?

2 个答案:

答案 0 :(得分:5)

您可以使用

val pattern = """(?<=¦)\d+$""".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

在这里

  • (?<=¦)-在¦之后的位置
  • \d+-1个以上数字
  • $-字符串的结尾。

或者,您也可以将¦字符拆分为最后一个项目:

println(str.split('¦').last)

请参见Scala demo

答案 1 :(得分:0)

模式"\\d+$"足以在字符串末尾找到数字。

val pattern = "\\d+$".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)

之所以可行,是因为正则表达式中的+运算符是 greedy ,它将收集与前面的表达式匹配的所有字符。这意味着无需显式指定定界符。