这是一个相当讨厌的正则表达式来处理它:(\d{1,3}(?:\.\d{1,3}){3})\s+(\d{1,3}(?:\.\d{1,3}){3})\s+(private|public)
使用kantan.regex,可以如下表达整个事情:
import kantan.regex.implicits._
// Where `input` is your string.
input.unsafeEvalRegex[(String, String, String)](rx"(\d{1,3}(?:\.\d{1,3}){3})\s+(\d{1,3}(?:\.\d{1,3}){3})\s+(private|public)")
这会产生一个Iterator[(String, String, String)],当运行通过foreach(println _) 时,会产生:
(192.10.678.234,192.12.898.123,public)
(192.10.567.6,3.3.3.3,public)
(192.20.123.39,123.34.31.678,private)
如果您对更好的类型感兴趣(例如,每个条目都有一个 Entry 类,以专用类型表示每个 IP 地址并具有 public 和 private 作为 ADT),请告诉我,我也可以修改代码来处理这个问题——kantan.regex 的重点是通过正则表达式从字符串中提取类型良好的数据。