我想在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>
我的代码出了什么问题?
答案 0 :(得分:2)
请尝试使用此正则表达式:
<.*?>(.*?)<.*?>
<强> Working demo 强>
Scala代码
另外,尝试使用此代码来获取捕获组#1的内容,如下所示:
val string = "<test>hello</test>"
val pattern = """<.*?>(.*?)<.*?>""".r
pattern.findAllIn(string).matchData foreach {
m => println(m.group(1))
}