我的行是889¦20457892¦955
我想获取955
作为输出,这是我的代码,但是它给出None
作为结果
val pattern = "(^¦*)$\\d+".r
val str = "889¦20457892¦955"
println(pattern findFirstIn str)
这是正确的正则表达式吗?
答案 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 ,它将收集与前面的表达式匹配的所有字符。这意味着无需显式指定定界符。