如何使用“ \ w +”在字符串中查找单词?

时间:2019-11-13 10:43:49

标签: regex scala

我需要编写一个将字符串作为输入的函数。此函数将返回List [String]。我必须在此函数中使用正则表达式“ \ w +”作为此任务的要求。因此,当给定一个随机文本的行字符串,并在其中包含一些实际单词时,我需要添加所有这些“正确”单词并将其添加到要返回的列表中。我还必须使用“ .findAllIn”。我尝试了以下

def foo(stringIn: String) : List[String] = {
    val regEx = """\w+""".r
    val match = regEx.findAllIn(s).toList
    match
}

但是它只是返回我传递给函数的字符串。

1 个答案:

答案 0 :(得分:2)

match是Scala中的保留关键字。因此,您只需要替换它即可。

def foo(stringIn: String) : List[String] = {
    val regEx = """\w+""".r
    regEx.findAllIn(stringIn).toList
}

scala> foo("hey. how are you?")
res17: List[String] = List(hey, how, are, you)

\\w是单词字符的pattern,在当前的正则表达式上下文中等于[a-zA-Z_0-9],匹配大小写字母,数字和下划线。

\\w+用于上述情况的一次或多次发生。

scala> foo("hey")
res18: List[String] = List(hey)

在上述情况下,正则表达式没有分割内容。因此返回原始字符串。

scala> foo("hey-hey")
res20: List[String] = List(hey, hey)

-不是\\w的一部分。因此,它被-

分割