数组 – 在scala中将匹配的正则表达式提取到数组
发布时间:2020-12-16 10:06:09 所属栏目:安全 来源:网络整理
导读:我遇到了这个问题.我有一个 val line:String = "PE018201804527901" 与此匹配 regex : (.{2})(.{4})(.{9})(.{2}) 我需要从正则表达式中提取每个组到一个数组. 结果将是: Array["PE","0182","018045279","01"] 我试着做这个正则表达式: val regex = """(.{2
我遇到了这个问题.我有一个
val line:String = "PE018201804527901" 与此匹配 regex : (.{2})(.{4})(.{9})(.{2}) 我需要从正则表达式中提取每个组到一个数组. 结果将是: Array["PE","0182","018045279","01"] 我试着做这个正则表达式: val regex = """(.{2})(.{4})(.{9})(.{2})""".r val x= regex.findAllIn(line).toArray 但它不起作用! 解决方法
你的解决方案@sheunis非常有帮助,最后我用这个方法解决了它:
def extractFromRegex (regex: Regex,line:String): Array[String] = { val list = ListBuffer[String]() for(m <- regex.findAllIn(line).matchData; e <- m.subgroups) list+=e list.toArray } 因为你的解决方案有这个代码: val line:String = """PE0182""" val regex ="""(.{2})(.{4})""".r val t = regex.findAllIn(line).subgroups.toArray 显示下一个异常: Exception in thread "main" java.lang.IllegalStateException: No match available at java.util.regex.Matcher.start(Matcher.java:372) at scala.util.matching.Regex$MatchIterator.start(Regex.scala:696) at scala.util.matching.Regex$MatchData$class.group(Regex.scala:549) at scala.util.matching.Regex$MatchIterator.group(Regex.scala:671) at scala.util.matching.Regex$MatchData$$anonfun$subgroups$1.apply(Regex.scala:553) at scala.util.matching.Regex$MatchData$$anonfun$subgroups$1.apply(Regex.scala:553) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.immutable.List.foreach(List.scala:318) at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at scala.collection.AbstractTraversable.map(Traversable.scala:105) at scala.util.matching.Regex$MatchData$class.subgroups(Regex.scala:553) at scala.util.matching.Regex$MatchIterator.subgroups(Regex.scala:671) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |