0
my_string = "Value1=Product Registered;Value2=Linux;Value3=C:5;C++:5;Value4=43;"

次の正規表現を使用していました。

tokens = re.findall(r'([^;]+)=([^;]+)', line, re.I)

value1、value2 などを解析し、それらの値をデータベースに入れる必要があります。たとえば、 -- を格納する必要がありますが"C:5;C++:5"value3上記の正規表現を使用するC:5と、 に基づいて解析するため、のみを格納でき";"ます。これを行うためのより良い方法は何でしょうか?

ありがとう!

4

1 に答える 1

3

キー名にセミコロンが含まれていないと仮定するのは妥当と思われます。これが真実でない場合、Philipp が指摘したように、言葉があいまいです。しかし、そうでない場合は、先読みを使用して、どちら;がセパレーターであるかを判断できます。その後に、 または ではないもののシーケンスが続き、次にまたは;または文字列の終わりのいずれかが続く必要があります。==

>>> my_string = "Value1=Product Registered;Value2=Linux;Value3=C:5;C++:5;Value4=43;"
>>> r = re.compile(r'([^;]+)=([^=]+);(?=[^;=]*(?:=|$))')
>>> r.findall(my_string)
[('Value1', 'Product Registered'),
 ('Value2', 'Linux'),
 ('Value3', 'C:5;C++:5'),
 ('Value4', '43')]
于 2012-07-12T23:49:33.997 に答える