代码之家  ›  专栏  ›  技术社区  ›  BARATH

获取Scala中最后一行delimeter之后的数字的正则表达式

  •  1
  • BARATH  · 技术社区  · 6 年前

    我的台词是 889¦20457892¦955

    我想得到 955 None 因此

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

    2 回复  |  直到 6 年前
        1
  •  5
  •   Wiktor Stribiżew    6 年前

    你可以用

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

    在这里,

    • (?<=¦) ¦
    • \d+ -1+位
    • $ -字符串结束。

    char和get最后一项:

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

    Scala demo

        2
  •  0
  •   Tim    6 年前

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

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

    + 正则表达式中的运算符是 并将收集与前面表达式匹配的所有字符。这意味着不需要显式指定分隔符。