gpt4 book ai didi

regex - scala 模式与正则表达式lookbehind 运算符匹配

转载 作者:行者123 更新时间:2023-12-01 16:09:13 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式和模式匹配从字符串中提取值:

val reg = """((?<=a)b)""".r
"ab" match { case reg(x) => x }

无论我如何尝试,它仍然会抛出 MatchError。但是,如果我尝试以下方法:

reg.findAllIn("ab").mkString

正则表达式的行为符合预期:res28: String = b

当然,我可以简单地更改正则表达式并添加另一个组:

val reg = """(a)(b)""".r
"ab" match { case reg(_,x) => x }

但我想知道是否可以使用具有模式匹配的前瞻/后瞻运算符。

提前谢谢您。

最佳答案

是的,但模式与您匹配 don't get a callMatcher.find ,就像您在 Regex.findAllIn 中所做的那样,所以你必须把它变成 UnAnchoredRegex通过使用 Regex.unanchored (或第一次匹配所有内容):

val reg = "((?<=a)b)".r.unanchored
// ".*((?<=a)b)".r would also work
"ab" match { case reg(x) => x }

ScalaDoc 中的关键条目是:

This method attempts to match the entire input by default; to find the next matching subsequence, use an unanchored Regex.

(强调我的)。

关于regex - scala 模式与正则表达式lookbehind 运算符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com