0
晚上好#1,斯卡拉正則表達式匹配MAC地址
我被困在一個地方,我不能讓斯卡拉正則表達式匹配發揮好,這裏是我的代碼
private def handle_read(packet: TFTPReadRequestPacket, tftp_io: TFTP): Unit = {
val MAC_REGEX = "([0-9A-F]{2}[:-]){5}([0-9A-F]{2})".r
packet.getFilename match {
case MAC_REGEX(a) => println(s"Client is coming from $a")
}
}
當正則表達式是([0-9A-F]{2}[:-])
我請求文件70-
這是罰款和吐出的客戶端「從70來了」,但是當它是完整的正則表達式,我要求70-CD-60-74-24-9C
它拋出像這樣
[ERROR] [04/28/2015 21:25:27.818] [polydeploy-baremetal-akka.actor.default-dispatcher-4] [akka://polydeploy-baremetal/user/TFTP_Queue] 70-CD-60-74-24-9C (of class java.lang.String)
scala.MatchError: 70-CD-60-74-24-9C (of class java.lang.String)
at com.polydeploy.baremetal.TFTPQueue$.handle_read(TFTPQueue.scala:40)
at com.polydeploy.baremetal.TFTPQueue$.com$polydeploy$baremetal$TFTPQueue$$handle_request(TFTPQueue.scala:33)
at com.polydeploy.baremetal.TFTPQueue$$anonfun$receive$1.applyOrElse(TFTPQueue.scala:14)
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
at com.polydeploy.baremetal.TFTPQueue$.aroundReceive(TFTPQueue.scala:10)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)
at akka.dispatch.Mailbox.run(Mailbox.scala:221)
at akka.dispatch.Mailbox.exec(Mailbox.scala:231)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
異常
我想嘗試和推測的是能夠有一個TFTP請求進來pxelinux.cfg/01-70-CD-60-74-24-9C
並拉出MAC地址。
任何及所有的幫助感激!
謝謝,利亞姆。