我需要将句子拆分为单词,以删除多余的字符。
我为此准备了regexp:
val wordCharacters = """[^A-z'\d]""".r
现在我有一条规则,可用于以其他方式处理任务:
wordCharacters.split(words)
.filterNot(_.isEmpty)
words
我需要解析的任何句子。
但是问题是,如果我尝试处理"car: carpet, as,,, java: javascript!!&@$%^&"
,我会再得到一个单词^
。在没有^
的情况下尝试更改我的正则表达式,在不同情况下我遇到了更多问题……
有什么想法要解决吗?
如果有人想玩它,请尝试link或以下代码:
val wordCharacters = """[^A-z'\d]""".r
val stringToInt =
wordCharacters.split("car: carpet, as,,, java: javascript!!&@$%^&")
.filterNot(_.isEmpty)
.toList
println(stringToInt)
列表(汽车,地毯,as,java,javascript)
答案 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