首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指示Scala的正则表达式匹配器选择最左边的替代

如何指示Scala的正则表达式匹配器选择最左边的替代
EN

Stack Overflow用户
提问于 2021-03-01 08:14:47
回答 1查看 56关注 0票数 -2

我在尝试从以下位置检索值时遇到了正则表达式交替问题

..。我已经尝试了默认和

方法时初始化的状态。

方法。

使用的regex模式

具有示例文本的

,我想收到

因为

我已经把它放在了第一个交替的位置。

..。我搞不懂为什么我真的收到了

取而代之的是

它位于第二交替位置

..。

在查看了一系列涉及输入字符串中多个匹配的问题后,我没有找到任何该地址

如何处理交替,而不是将它们按正确的顺序放在一起

,我已经做到了。

我可以使用什么方法(如果有的话)来获取我想要的值

,或者返回两个值,每个值对应于它匹配的每个替换?

下面是我的IntelliJ Scala工作表中的代码示例(

下面是Scastie中的代码

):

代码语言:javascript
复制
import scala.util.matching.Regex

val regexStringLongOrLat: String =
  """(1e)|(a1)"""
val regexLongOrLat: Regex = regexStringLongOrLat.r.unanchored

val sample =
  "a1e"

val test2 =
  regexLongOrLat
    .findAllMatchIn(sample)
    .toList

println(test2) //This should return List(1e)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 08:30:23

它返回

因为这是正则表达式引擎遍历字符串时遇到的第一个匹配。

在这种情况下,你可以通过消极的前瞻来得到你想要的东西。

代码语言:javascript
复制
"(1e|a1(?!e))".r
              .findAllIn("a1e")
              .toList
//res0: List[String] = List(1e)

注意:

返回相同的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66415179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档