繁体   English   中英

如何在scala中使用正则表达式?

[英]How to use regular expression in scala?

我正在学习Scala和spark,并希望从字符串中获取数字。 为此我正在使用正则表达式。 并了解了在Scala中使用常规模式的奇怪签名。

这是我的代码:

val myString: String = "there would be some number here 34."
val pattern = """.* ([\d]+).*""".r  
val pattern(numberString) = myString
val num = numberString.toInt
println(answer)

代码工作正常,但似乎有点奇怪,不太可读。

在Scala中还有其他方法吗? 或者我可以使用的任何其他语法?

提取数字的模式匹配方式相当耗费资源:因为模式必须匹配整个字符串,所以必须在正则表达式的两端添加.* ,这会触发大量的回溯。 您还添加了一个空格以确保第一个.*不会吃掉左边的所有数字并返回找到的所有1+位数。

如果您正在寻找第一场比赛,请使用findFirstIn

val myString: String = "there would be some number here 34."
val numberString = """\d+""".r.findFirstIn(myString)
val num = numberString.get.toInt
println(num) // => 34

请参阅Scala演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM