如何检查字符串是一个有效的正则表达式 - python?

alv*_*vas 36 python regex string validation

在Java中,我可以使用以下函数来检查字符串是否是有效的正则表达式:(来源:如何检查字符串是否是正则表达式)

boolean isRegex;
try {
  Pattern.compile(input);
  isRegex = true;
} catch (PatternSyntaxException e) {
  isRegex = false;
}
Run Code Online (Sandbox Code Playgroud)

是否有一个python相当于Pattern.compile()PatternSyntaxException?如果是这样,它是什么?

fal*_*tru 54

与Java类似.使用re.error例外:

import re

try:
    re.compile('[')
    is_valid = True
except re.error:
    is_valid = False
Run Code Online (Sandbox Code Playgroud)

例外 re.error

传递给此处其中一个函数的字符串不是有效的正则表达式(例如,它可能包含不匹配的括号)或在编译或匹配期间发生其他错误时引发的异常.如果字符串不包含模式匹配,则永远不会出错.

  • @alvas,只要您使用[Python支持的正则表达式](http://docs.python.org/2/library/re.html#regular-expression-syntax). (3认同)
  • 还有类似于[此评论]的正则表达式的`RecursionError`(/sf/ask/1374169611/#comment29145368_19630994) . 它也可以针对无效的正则表达式引发,例如 `'('*1000+'a'+')'*1000+'('`. (3认同)
  • 这对于正则表达式语法错误是可以的,但如果模式不是 `str`,还要注意 `TypeError`。 (2认同)