我想要的东西基本上与多行字符串的行尾相匹配。理想情况下是这样的:
def almostAnything: Parser[String] = """[^\r\n]+""".r ^^ { _.toString.trim }
问题是......这不起作用。它忽略了否定的\ n并且只是在\ n。
之后保持匹配到下一个字符串块为什么会这样,我怎样才能成功匹配任何直到行尾(!=字符串结尾)?
答案 0 :(得分:1)
我不确定解析器是如何工作的,但是你在这里遇到的问题不在于你的正则表达式,而在于Regex
的工作方式。
默认情况下,Regex
被锚定 - 它们希望匹配整个字符串。如果你想要部分匹配(似乎你这样做),你必须解开它们。
例如:
val sameLine = """([^\r\n]+)""".r.unanchored
"45ft\n something" match {
case sameLine(c) => Some(c)
case _ => None
}
这会产生Some(45ft)
。