gpt4 book ai didi

regex - 如何在 Scala 中使用正则表达式?

转载 作者:行者123 更新时间:2023-12-01 15:33:15 25 4
gpt4 key购买 nike

我正在学习 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 demo .

关于regex - 如何在 Scala 中使用正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com