如何在Scala中使用正则表达式匹配

问题描述 投票:0回答:1

我开始学习Scala,并希望使用正则表达式来匹配字符串中的字符,因此我可以填充可变的字符映射及其字符值(字符串值,数字等,然后打印结果。)>

我在SO上查看了几个答案,并遍历了Scala Docs,但似乎无法正确地做到这一点。我有一个短的Lexer类,当前看起来像这样:

class Lexer {

    private val tokens: mutable.Map[String, Any] = collection.mutable.Map()

    private def checkCharacter(char: Character): Unit = {
        val Operator = "[-+*/^%=()]".r
        val Digit = "[\\d]".r
        val Other = "[^\\d][^-+*/^%=()]".r
        char.toString match {
            case Operator(c) => tokens(c) = "Operator"
            case Digit(c) => tokens(c) = Integer.parseInt(c)
            case Other(c) => tokens(c) = "Other" // Temp value, write function for this
        }
    }

    def lex(input: String): Unit = {
        val inputArray = input.toArray
        for (s <- inputArray)
            checkCharacter(s)
        for((key, value) <- tokens)
            println(key + ": " + value)
    }
}

我对某种奇怪的方法语法Operator(c)感到困惑,因为我已经看到它被用来处理要匹配的值,并且也不确定这是否是在Scala中使用正则表达式的正确方法。我想我要这段代码做的很清楚,我真的很感谢能帮助理解这一点。如果需要更多信息,我将尽力提供

我开始学习Scala,并希望使用正则表达式来匹配字符串中的字符,因此我可以填充可变的字符映射及其字符值(字符串值,数字等),然后...

regex scala matching
1个回答
0
投票
此官方文档有很多示例:https://www.scala-lang.org/api/2.12.1/scala/util/matching/Regex.html。可能令人困惑的是正则表达式的类型及其在模式匹配中的使用...
© www.soinside.com 2019 - 2024. All rights reserved.