4

文字列(exim_mainlog行などの安全でない外部行)をスペースで分割したいが、二重引用符の内側にあるスペースでは分割せず、引用符がのようなバックスラッシュでエスケープされている場合は無視し、エスケープされた\"ばかりの場合はバックスラッシュを無視しますのように\\。FSMを使用して文字列を手動でゆっくりと解析することなく。

行の例

U=mailnull T="test \"quote\" and wild blackslash\\" P=esmtps

に分割する必要があります

["U=mailnull", "T=\"test \\\"quote\\\" and wild blackslash\\\"", "P=esmtps"]

(ところで、私はルビーがそのような分割のための方法を持っていたはずだと思います..、ため息)。

4

1 に答える 1

8

私は十分に簡単な解決策を見つけたと思います:input.scan(/(?:"(?:\\.|[^"])*"|[^" ])+/)

于 2012-10-24T00:28:05.073 に答える