Regex 根据许多正则表达式测试字符串

Regex 根据许多正则表达式测试字符串,regex,time-complexity,Regex,Time Complexity,考虑长度为n的输入字符串S。应用程序必须考虑S是否匹配M正则表达式中的任何一个。假设所涉及的特定正则表达式可以在时间上进行匹配,那么所有m个表达式的测试速度是否比按顺序测试每个表达式的普通Omn方法更快?此外,如果这样的操作是可能的,那么有没有实现它的库和语言?不确定这是否真的回答了您的问题 下面是一个groovy脚本,可用于测试字符串的有效和无效列表,并针对特定正则表达式进行测试 def validList = ["9999","[9999]","9-9","[9-9]","09XYAB","

考虑长度为n的输入字符串S。应用程序必须考虑S是否匹配M正则表达式中的任何一个。假设所涉及的特定正则表达式可以在时间上进行匹配,那么所有m个表达式的测试速度是否比按顺序测试每个表达式的普通Omn方法更快?此外,如果这样的操作是可能的,那么有没有实现它的库和语言?

不确定这是否真的回答了您的问题

下面是一个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"
    }
}
你可以在上面测试