考虑长度为 n 的输入字符串S.如果S与任何 m 正则表达式匹配,则应用程序必须考虑。假设所涉及的特定正则表达式可以在时间O( n )中匹配,那么所有 m 表达式都可以比平凡的O( mn < / em>)按顺序测试每个表达式的方法?另外,如果可以进行这样的操作,是否有任何实现它的库(任何语言)?
答案 0 :(得分:0)
不确定这是否真的能回答你的问题。
这是一个groovy脚本,可用于测试有效和无效的字符串列表,并针对某些正则表达式进行测试。
def validList = ["9999","[9999]","9-9","[9-9]","09XYAB","ABXY","BA09YX"]
def invalidList = ["[999","9- ", "9-]", "9- 9","9[", "[999[", "09XYABC","1234", "A B"]
def pattern = ~/([09XYAB-]*)|([\[]([09XYAB-]*)([\]]))/
print "Verifying against the regex '${pattern}'\n"
print "Valid List Result(+ve tests)"
print "\n---------------------------------------------\n"
validList.each{
if(pattern.matcher(it).matches()) {
print it +"\ttest passed - Pattern matched\n"
} else {
print it +"\ttest failed - Pattern not matched\n"
}
}
print "\n"
print "inValid List Result(-ve tests)"
print "\n---------------------------------------------\n"
invalidList.each{
if(!(pattern.matcher(it).matches())) {
print it +"\tTest Passed - Pattern not matched\n"
} else {
print it +"\tTest Failed - Pattern matched\n"
}
}
可以在console
上进行测试