Scala中的正则表达式非捕获组

时间:2014-08-13 14:49:29

标签: regex scala pattern-matching capture

我想在scala中使用正则表达式非捕获组,简要措辞"?:"。

经过几个小时的测试后,我来到这里寻找解决方案。 我发现了这个问题及其答案,但它对我没有用。 Is it possible to make non-capturing groups work in scala regexes when pattern matching

所以我写了一个最小的例子来测试上面线程的语句。

val test = ("""(?:<.*>)(.*)(?:<.*>)""".r findFirstIn ("<test>hello</test>")) getOrElse ""
println("DEBUG MESSAGE (test): " + test)

预期输出:hello

实际输出:<test>hello</test>

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

请尝试使用此正则表达式:

<.*?>(.*?)<.*?>

<强> Working demo

enter image description here

Scala代码

另外,尝试使用此代码来获取捕获组#1的内容,如下所示:

val string = "<test>hello</test>"
val pattern = """<.*?>(.*?)<.*?>""".r
pattern.findAllIn(string).matchData foreach {
   m => println(m.group(1))
}