Scala正则表达式命名捕获组
发布时间:2020-12-16 09:19:57 所属栏目:安全 来源:网络整理
导读:在 scala.util.matching.Regex trait MatchData年,我看到有支持群组名称,我认为这与( Regex Named Capturing Groups) 但是从Java does not support groupnames until version 7起,据我所知(ref),Scala版本2.8.0(Java HotSpot(TM)64位服务器虚拟机,Java 1.6.
在
scala.util.matching.Regex trait MatchData年,我看到有支持群组名称,我认为这与(
Regex Named Capturing Groups)
但是从Java does not support groupnames until version 7起,据我所知(ref),Scala版本2.8.0(Java HotSpot(TM)64位服务器虚拟机,Java 1.6.给了我这个例外: scala> val pattern = """(?<login>w+) (?<id>d+)""".r java.util.regex.PatternSyntaxException: Look-behind group does not have an obvio us maximum length near index 11 (?<login>w+) (?<id>d+) ^ at java.util.regex.Pattern.error(Pattern.java:1713) at java.util.regex.Pattern.group0(Pattern.java:2488) at java.util.regex.Pattern.sequence(Pattern.java:1806) at java.util.regex.Pattern.expr(Pattern.java:1752) at java.util.regex.Pattern.compile(Pattern.java:1460) 那么问题是Scala支持的命名集群?如果有这样的例子呢? 解决方法
恐怕Scala的命名组没有定义相同的方式.它只不过是原始模式中未命名(即编号的)组的后处理别名.
以下是一个例子: import scala.util.matching.Regex object Main { def main(args: Array[String]) { val pattern = new Regex("""(w*) (w*)""","firstName","lastName"); val result = pattern.findFirstMatchIn("James Bond").get; println(result.group("lastName") + "," + result.group("firstName")); } } 打印(as seen on ideone.com): Bond,James 这里发生的是在正则表达式的构造函数中,我们提供了组1,2的别名,然后可以通过这些名称来引用这些组.这些名字在模式本身并不是内在的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读