Fortranでは、data文は「data」という単語で始まり、その後に配列の名前が続き、その後に配列の値が挟まれます2つのスラッシュ "/"の間。上記で2文字の間にある単語を含まないものと一致するPythonの正規表現
pattern_data = r'''
(data [^/]+/[^/]+ /)
'''
c = "data plevel = /4.56, 234., 1e-45/ data tlayer/-5.6, +290.098/"
、c
私は抽出したい2つのデータステートメントを含むサンプルFortranコードのようなものです。 pattern_data
は、 "data"で始まり、 "/"以外の文字、 "/"、 "/"、 "/"の後に続けて続くサブストリングに一致する正規表現です。
これは与えて、動作しているようです:
regex = re.compile(pattern_data, re.VERBOSE)
regex.findall(c)
['data plevel = /4.56, 234., 1e-45/', 'data tlayer/-5.6, +290.098/']
しかし何私が代わりに言いたかった場合:他のものに続いて「/」、「/」に続く以外に続いて「データ」を、 「データ」より後に「/」が続きます。私はこれもデータステートメントと一致すると思いますが、「何も」の正規表現は何ですか?
data [^/]+/(?<! data).*/
をしかし、これは文字列全体c
に一致します。
私はこのような負の後読みを使用して試してみました。
は、2「/」sの間で「[^ /]」持たないようにすることができませんか? – Jack
先読みも同様に境界を設定する必要があります。 '/(?!。*?data)。*?/'であれば、'/1、2、3/data'は失格となります。 – Amadan