[英]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.