2015-01-16 5 views
0

Рассмотрим входную строку S длины n. Приложение должно рассмотреть, если S соответствует любому из m регулярных выражений. Учитывая предположение, что конкретные регулярные выражения могут быть сопоставлены по времени O (n), могут ли все выражения m быть протестированы быстрее, чем тривиальный подход к тестированию каждого выражения в последовательности? Кроме того, если такая операция возможна, существуют ли какие-либо библиотеки (любой язык), которые ее реализуют?Проверьте строку на множество регулярных выражений

ответ

0

Не уверен, что это действительно отвечает на ваш вопрос.

Вот примерный скрипт, который может быть использован для проверки действительного и недействительного списка строк и проверки на некоторые регулярные выражения.

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

Смежные вопросы