我需要一种方法来检查正则表达式是否可以匹配0个字符,因此无限匹配。例如,正则表达式.*
可以匹配0个字符,这意味着它将永远循环,从而导致我的应用程序崩溃。
在我的应用中,用户输入正则表达式,当然可以永久循环。我该如何防止这种情况发生?
答案 0 :(得分:1)
没有正则表达式无限匹配的东西;因此陷入无限循环。例如,当有0个字符时,正则表达式.*
将立即停止,并且将对任何n
个字符串的n
次迭代运行。
正则表达式是有限状态机的一种形式。字符串,它的输入,也总是有限的。正则表达式中没有无限。
以下是CS背景中提出的相同问题:https://cs.stackexchange.com/questions/47835/can-a-regular-expression-be-infinite