Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala解析字符串序列_Scala - Fatal编程技术网

Scala解析字符串序列

Scala解析字符串序列,scala,Scala,我希望将字符串序列解析为单个标记。现在它只解析第一个单词 class SimpleRegexParser extends RegexParsers{ def word: Parser[String] = """[a-z]+""".r ^^ { _.toString } } object SimpleRegexParserMain extends SimpleRegexParser{ def main(args: Array[String]) = { println(parse(w

我希望将字符串序列解析为单个标记。现在它只解析第一个单词

class SimpleRegexParser extends RegexParsers{

 def word: Parser[String]    = """[a-z]+""".r ^^ { _.toString }

}

object SimpleRegexParserMain extends SimpleRegexParser{
 def main(args: Array[String]) = {
println(parse(word, "johnny has a little lamb"))

 }
}
现在我得到:[1.7]解析:johnny

如何将整个字符串解析为单个标记,以便对可变字符串长度有效


欢迎任何能让这项工作成功的建议。请告诉我如何使它在scala中工作

好的。我找到了答案

我不得不改变这个词的定义

以下是更新后的定义:

class SimpleRegexParser extends RegexParsers{

def word: Parser[String]    = rep("""[a-z]+""".r) ^^ { _.toString }

}
以前的表达式只适用于单个单词,现在我重复了单词rep()

结果如下:

[1.25] parsed: List(johnny, has, a, little, lamb)

我如何过滤大写的单词?尝试将定义更改为““[A-Z]+”.r,但它只匹配字符串“要打印的标签文本并将用于&&”的第一个单词。在Java中,此代码起作用:“公共类regexample{public static void main(string[]args){string s s=“要打印的标签文本并将用于&”;Pattern p=Pattern.compile([A-Z]+”);Matcher m=p.Matcher(s);while(m.find(){System.out.println(m.group();}}}}}}'如何在scala中获得相同的结果?val regexpatern=“””[a-z]+”.r regexpatern.findAllIn(“约翰尼有一只小羊羔”)。foreach{println}。即使这样也行。谢谢你的回复。如果我必须用大写字母过滤字符串,我应该更改什么?“[A-Z]+”.r。这个正则表达式将过滤大写的字符串。谢谢。我将代码更新为:def word:Parser[String]=rep(“[A-Z]+”.r)^{{uuuz.toString}。我的输入字符串是“STARTQUOTE johnny有一个小lamb ENDQUOTE”。我得到的结果是:[1.11]已解析:List(STARTQUOTE)。它缺少第二个大写单词。