【发布时间】:2016-08-16 02:33:48
【问题描述】:
我有一个像".*(A20).*|.*(B30).*|C" 这样的正则表达式。
我想编写一个函数,根据找到的匹配返回A20 或B30。
val regx=".*(A20).*|.*(B30).*".r
"helloA20" match { case regx(b,_) => b; case _ => "" } // A20
"helloB30" match { case regx(b,_) => b; case _ => "" } // null
"C" match { case regx(b,_) => b case _ => "" }
它返回 null 因为我不考虑第二组。在我的实际代码中,我有很多这样的组。我想返回匹配的字符串。请帮我找到解决方案。
【问题讨论】:
-
我认为你只需要
.*(A20|B30).*。您是否需要整个字符串或捕获的值?如果您不需要捕获的值,只需使用.*(?:A20|B30).*。 -
@WiktorStribiżew 谢谢。我的正则表达式会有不同的 or(|) 条件和不同的逻辑,比如“。*(A20).*|(B30)|(C)”。我需要捕获的值进一步处理,如 A20,B30,C
-
然后给我们完整的例子,以便我们更好地帮助你。
标签: regex scala switch-statement pattern-matching regex-group