66

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

boolean isRegex;
try {
  Pattern.compile(input);
  isRegex = true;
} catch (PatternSyntaxException e) {
  isRegex = false;
}

是否有 Python 等效的Pattern.compile()and PatternSyntaxException?如果是这样,它是什么?

4

2 回答 2

96

类似于 Java。使用re.error例外:

import re

try:
    re.compile('[')
    is_valid = True
except re.error:
    is_valid = False

例外re.error

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

于 2013-10-28T09:24:55.410 回答
2

编写相同答案的另一种奇特方式:

import re
try:
    print(bool(re.compile(input())))
except re.error:
    print('False')
于 2020-09-17T14:46:47.297 回答