【问题标题】:Regex Negated character class problem, Scala正则表达式否定字符类问题,Scala
【发布时间】:2020-08-20 23:42:41
【问题描述】:

使用此代码,我试图从字符串中仅获取“键”和“值”。 但函数返回无。如果我将[^"]+ 更改为.+,那么它将返回结果,但值也将包含不需要的部分。如何解决这个问题?

def parseLine(line: String): Option[(String, String)] = {
    val exportRegex = """\s*export\s+(\S+)\s*="([^"]+)"""".r
    line match {
      case exportRegex(key, value) =>Some(key, value)
      case _ => None
    }
  }

parseLine("""export key="value" #"none-needed"""")

【问题讨论】:

  • 你是对的@jwvh。有用。谢谢你。你能写一个答案而不是评论吗?

标签: regex scala


【解决方案1】:

问题在于 ...([^"]+)""" 意味着输入应该以捕获组结尾,甚至在任何右引号之前。

要修复它,您可以 A)在末尾添加 .*(即 ...([^"]+).*""")或 B)使正则表达式 .unanchored,在这种情况下,您可以在开头删除 \s* .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2012-11-04
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多