我的目标是以优雅的方式将几个正则表达式模式匹配到同一个字符串。我知道有必要使用组来进行这种类型的正则表达式匹配,并且为了使用下面的匹配功能,我需要在casePattern(_,_)
语句中显式捕获这些组中的每一个(例如,两个组在case
语句中需要两个_
)。
import scala.util.matching.UnanchoredRegex
val regexPattern1 = "(Some)|(Pattern)".r.unanchored
val regexPattern2 = "(That)|(Other)|(pattern)".r.unanchored
val regexPattern3 = "(A)|(Whole)|(Different)|(One)".r.unanchored
"Some string to match patterns against" match {
case regexPattern1(_,_) => 1
case regexPattern2(_,_,_) => 2
case regexPattern3(_,_,_,_) => 3
}
现在,我有以下几点考虑:
unanchoredregex
对象,而不是将它们视为同一regex模式中的不同捕获组。大小写SomePattern(_,_,...n)
语句中的捕获组的数量。如果我没有弄对这一点,模式当然会默默地失败。这使得更新或调整我的模式以及随后调试正则表达式匹配变得很烦人。现在,我的问题是:有没有一种方法保留上面的语法,省去(我的目的)无用的_,_,_,...
部分,而是匹配任何第一次命中?
regex
类实现与unapplyseq
的匹配。这意味着您可以忽略具有_*
模式的每个组:
"Some string to match patterns against" match {
case regexPattern1(_*) => 1
case regexPattern2(_*) => 2
case regexPattern3(_*) => 3
}
我试图创建一个匹配特定模式的正则表达式,但我想忽略以开头的行。我怎么做? 如果一行不是以哈希开头,它应该被使用,就像我想要阻止攻击性语言一样,在这种情况下,它应该被覆盖。
给定下面的字符串 [NeMo(PROD)]10.10.100.100(EFA-B-3)[博科FC-Switch]传感器:电源#1(SNMP自定义表)关闭(无此名称(SNMP错误#2)) 我尝试获取多个匹配项以提取以下值: 因为我是正则表达式的初学者,所以我试图定义一些“规则”: 提取第一个圆括号内的第一个值,例如PROD 提取第一个闭合方括号和第二个开口圆括号之间的值,例如10.10.100.10
本文向大家介绍Scala中正则表达式以及与模式匹配结合(多种方式),包括了Scala中正则表达式以及与模式匹配结合(多种方式)的使用技巧和注意事项,需要的朋友参考一下 正则表达式 说明:.r()方法简介:Scala中将字符串转换为正则表达式 模式匹配一 说明:findAllIn(…)函数简介 模式匹配二 模式匹配三 模式匹配四 本节所有程序源码 总结 以上所述是小编给大家介绍的Scala中正则表达
问题内容: 我正在制作一个键值解析器,其中输入字符串采用的形式。键可以包含字符,并且和值可以包含任何字符,但,,和需要用反斜杠前缀。逗号用于分隔键值对,但在最后一对之后不需要。 到目前为止,我已经可以匹配大多数键和值,但是很显然它将不能处理多于一对的字符或者任何“控制”字符都不能转义。似乎匹配所有转义字符,但不匹配任何“正常”字符。 有没有办法检查逗号分隔并匹配所有转义的“控制”字符以及普通字符?
有没有一种方法可以在python中编写与以下格式的字符串匹配的正则表达式: 或 在这里,$=表示零或更多的空白可以存在 :来自字符串的固定子集的字符串['feat','fix','docs','断'] :最大长度为n的字符串 :最大长度为m的字符串 前缀应该始终是一个字符串,之后是一些最大q长度的字母数字字符 注意:我们不能省略像应该使用与下面示例中所示完全相同的格式: feat(feat new
我们得到了一些这样的内容: