Scala regex Named Capturing Groups

前端 未结 2 1156
旧巷少年郎
旧巷少年郎 2020-12-10 02:17

In scala.util.matching.Regex trait MatchData I see that there support for groupnames , I thought that this was related to (Regex Named Capturing Groups)

But since J

2条回答
  •  情歌与酒
    2020-12-10 02:53

    I'm afraid that Scala's named groups aren't defined the same way. It's nothing but a post-processing alias to unnamed (i.e. just numbered) groups in the original pattern.

    Here's an example:

    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"));
       }
    }
    

    This prints (as seen on ideone.com):

    Bond, James
    

    What happens here is that in the constructor for the Regex, we provide the aliases for group 1, 2, etc. Then we can refer to these groups by those names. These names are not intrinsic in the patterns themselves.

提交回复
热议问题