Regex 如何知道字符串是否是Python中的正则表达式?

Regex 如何知道字符串是否是Python中的正则表达式?,regex,python-3.x,Regex,Python 3.x,我正在使用Python3.3中的模块re来处理正则表达式。用户给我的程序一个字符串,这个字符串应该是正则表达式,它必须使用这个正则表达式 我认为这是不可能的,但是,有没有办法知道字符串是否是有效的正则表达式 谢谢大家! 您只需尝试使用编译正则表达式,如果正则表达式无效,将抛出一个 try: re.compile(regex) except re.error: # not valid 您只需尝试使用编译正则表达式,如果正则表达式无效,将抛出一个 try: re.compi

我正在使用Python3.3中的模块re来处理正则表达式。用户给我的程序一个字符串,这个字符串应该是正则表达式,它必须使用这个正则表达式

我认为这是不可能的,但是,有没有办法知道字符串是否是有效的正则表达式


谢谢大家!

您只需尝试使用编译正则表达式,如果正则表达式无效,将抛出一个

try:
    re.compile(regex)
except re.error:
    # not valid

您只需尝试使用编译正则表达式,如果正则表达式无效,将抛出一个

try:
    re.compile(regex)
except re.error:
    # not valid
我认为尝试并捕获错误是最有用的方法,但根据正则表达式的复杂程度,也可以使用正则表达式来测试给定字符串是否为正则表达式

但我认为要描述所有有效的Python正则表达式,您至少需要一个

我认为尝试并捕获错误是最有用的方法,但根据正则表达式的复杂程度,也可以使用正则表达式来测试给定字符串是否为正则表达式


但我认为,要描述所有有效的Python正则表达式,您至少需要一个。当用户意外地生成一个有效的正则表达式时,它不会捕获用例,但当用户提供一个无效的正则表达式时,它会捕获任何实例。您可以尝试将无效的“++”字符串替换为像“[1-9]”这样的有效字符串,以查看其工作情况

import re

try:
    r = re.compile('++')
except:
    print 'Invalid Regex'
else:
print 'Regex valid'

您可以在一次尝试中编译它。当用户意外地生成一个有效的正则表达式时,它不会捕获用例,但当用户提供一个无效的正则表达式时,它会捕获任何实例。您可以尝试将无效的“++”字符串替换为像“[1-9]”这样的有效字符串,以查看其工作情况

import re

try:
    r = re.compile('++')
except:
    print 'Invalid Regex'
else:
print 'Regex valid'

不确定您想用它做什么,但要注意某些正则表达式可能会导致拒绝服务;让用户输入您将要使用的正则表达式是不明智的,不确定您想使用它做什么,但要注意某些正则表达式可能会导致拒绝服务;让用户输入您将要使用的正则表达式是不明智的