これを処理する方法は何ですか?文字列、生の文字列、(?is)、re.DOTALL のさまざまな順列を試しましたが、一様に失敗しました。
以下は、私が試したことのサンプルです。
>>> x="select a.b from a join b \nwhere a.id is not null"
>>> print (x)
select a.b from a join b
where a.id is not null
>>> y=re.match("(?is)select (.*) from (.*) where (?P<where>.*)",x,re.DOTALL)
>>> y.groupdict()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groupdict'
注意も試しました:
>>> x=r"""select a.b from a join b
where a.id is not null""""
同じ (間違った結果)
また、(?is) と re.DOTALL を使用して/使用せずに試しました。
注: 埋め込まれた改行がテストされた文字列から削除された場合、一致は完全に機能します。
>>> nonewline="select a.b from a join b where a.id is not null"
>>> y=re.match("(?is)select (.*) from (.*) where (?P<where>.*)",nonewline,re.DOTALL|re.MULTILINE)
>>> y.groupdict()
{'where': 'a.id is not null'}