假设我收集了这些字段:
{
"category" : "ONE",
"data": [
{
"regex": "/^[0-9]{2}$/",
"type" : "TYPE1"
},
{
"regex": "/^[a-z]{3}$/",
"type" : "TYPE2"
}
// etc
]
}所以我的输入是"abc“,所以我想获得相应的类型(或最佳匹配,虽然最初我假设RegExes是排他的)。是否有任何可能的方法来实现这一点,以体面的表现?(这将排除对RegEx数组的每个项进行迭代)
请注意,如果可能的话,模式可以重新安排,因为该项目仍处于设计阶段。因此,替代方案将受到欢迎。
每个类别可以有大约100 - 150 RegExes.我计划有大约300个类别。但我知道类型是相互排斥的。
一个类别的真实世界例子:
type1=^34[0-9]{4}$,
type2=^54[0-9]{4}$,
type3=^39[0-9]{4}$,
type4=^1[5-9]{2}$,
type5=^2[4-9]{2,3}$发布于 2014-10-21 14:50:23
广度优先搜索。如果您的输入以字母开头,则可以丢弃类型1,如果它还包含一个数字,则可以丢弃独占(仅限数字或字母)类别,如果它还包含符号,则只保留少数包含所有三种类型的类型。然后,按照上述建议,为其余的类别。在某种意义上,为输入类型设置用例,并为选定数量的“regex类型”设置用例,以便向下搜索到正确的类型。
或者,您可以根据输入创建regex模型,并将其与作为字符串存在的regex模型列表进行比较,以获得类型。这样,您只需花费资源分析输入,就可以为它构建正则表达式。
https://stackoverflow.com/questions/26431078
复制相似问题