4
object
から明示的に継承せずにPythonコードにクラスを見つけるためにregexを構築しようとしています。私を与え正規表現の一部を否定
import re
test_string = '''
class Test(object):
pass
class Test:
pass
'''
regex = r'class .*(?!\(object\)).*'
re.compile(regex).findall(test_string)
は:
'class Test(object):', 'class Test:'
しかし、私は唯一の'class Test:'
必要です。肯定先読みが正常に動作します。同時に
:
>>> print regex = r'class .*(?=\(object\)).*'
['class Test(object):']
ここでの問題は何ですか?
「ast」ではなく正規表現を使用する理由は何ですか?正規表現を使用するとバグが発生しやすくなります。 – Bharel
@Bharelはgithub repos –
@ xiからいくつかの統計を収集していますが、 'class test:...'と '' class test:... "'の間では分かりません。コメント、文字列、ドキュメントストリングのデータもすべてカウントされます: -/ – Bharel