斯卡拉(Scala)。正则表达式无法删除符号^

时间:2019-08-18 22:45:00

标签: regex scala

我需要将句子拆分为单词,以删除多余的字符。

我为此准备了regexp:

val wordCharacters = """[^A-z'\d]""".r

现在我有一条规则,可用于以其他方式处理任务:

wordCharacters.split(words)
    .filterNot(_.isEmpty)

words我需要解析的任何句子。

但是问题是,如果我尝试处理"car: carpet, as,,, java: javascript!!&@$%^&",我会再得到一个单词^。在没有^的情况下尝试更改我的正则表达式,在不同情况下我遇到了更多问题……

有什么想法要解决吗?

P.S。

如果有人想玩它,请尝试link或以下代码:

    val wordCharacters = """[^A-z'\d]""".r
    val stringToInt =
      wordCharacters.split("car: carpet, as,,, java: javascript!!&@$%^&")
        .filterNot(_.isEmpty)
        .toList
    println(stringToInt)

预期结果是:

列表(汽车,地毯,as,java,javascript)

2 个答案:

答案 0 :(得分:1)

我很想从\W开始并从那里扩展。

"\\W+".r.split("car: carpet, as,,, java: javascript!!&@$%^&")
//res0: Array[String] = Array(car, carpet, as, java, javascript)

答案 1 :(得分:1)

A-z部分并非您想要的。可能您认为下a紧接在上Z之后,但是中间还有其他一些字符,其中一个是^

因此,将正则表达式更正为

"""[^A-Za-z'\d]""".r

将解决此问题。

看看字符的顺序: https://en.wikipedia.org/wiki/List_of_Unicode_characters