070:文字列が正規表現として正しいか調べる
正規表現として正しいか調べるには正規表現オブジェクトにコンパイルしてみるのが 最も手軽で早いです。:
>>> import re
>>> re.compile('abc')
<_sre.SRE_Pattern object at 0x00A74C80>
>>> re.compile('(abc')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python25\Lib\re.py", line 180, in compile
return _compile(pattern, flags)
File "C:\Python25\Lib\re.py", line 233, in _compile
raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
正規表現として正しくないときには re.error 例外となります。 チェックのためだけに例外を送出したくない場合は、次のように関数化しておくとよいでしょう。。:
import re
def re_check(string):
try:
return re.compile(string)
except re.error:
pass
return False
正しいときには正規表現オブジェクト、正しくないときには False が返ります。 正しいときに True を返すようにしてもかまいませんが、正規表現オブジェクトを評価すると真なので このままでも支障ないはずです。:
>>> re_check("abc")
<_sre.SRE_Pattern object at 0x00A74C80>
>>> re_check("(abc")
False
>>> if re_check("abc"):
... print "OK"
...
OK
>>> if re_check("(abc"):
... print "OK"
...