多くのプログラマーは、最近ではWebサービスの助けを借りて、またはより伝統的に対話型プロンプトで、または開発中の正規表現とテストケースのコレクションを持つ小さなスクリプトを書くことで、簡単な正規表現を作成する喜びを知っています。いずれの場合も、プロセスは反復的でかなり迅速です。必要なものが一致してキャプチャされ、不要なものが拒否されるまで、暗号のような文字列をハッキングし続けます。
単純な場合、結果はJava正規表現として次のようになります。
Pattern re = Pattern.compile(
"^\\s*(?:(?:([\\d]+)\\s*:\\s*)?(?:([\\d]+)\\s*:\\s*))?([\\d]+)(?:\\s*[.,]\\s*([0-9]+))?\\s*$"
);
また、多くのプログラマーは、正規表現を編集したり、レガシーコードベースの正規表現をコード化するだけで苦労することも知っています。それを分割するために少し編集すると、上記の正規表現は正規表現にかなり精通している人にとってはまだ非常に簡単に理解でき、正規表現のベテランはそれが何をするかすぐに見るべきです(誰かが運動をしたい場合には、投稿の最後に答えて自分自身でそれを理解する)。
しかし、正規表現が真に書き込み専用になるために物事はそれほど複雑になる必要はなく、勤勉な文書(もちろん誰もが書いているすべての複雑な正規表現についてもそうです)でさえ、正規表現の修正は困難な仕事。正規表現を慎重に単体テストしないと、非常に危険な作業になる可能性があります(ただし、もちろん、すべての複雑な正規表現(ポジティブとネガティブの両方)に対する包括的な単体テストがあります...)。
それで、長い話を簡単に言えば、正規表現の力を失うことなく、書き込み/読み取りソリューション/代替がありますか?上記の正規表現は、代替アプローチではどのようになりますか?どんな言語でも構いませんが、多言語ソリューションが最適ですが、正規表現は多言語です。
そして、以前の正規表現が行うことはこれです:formatの数字の文字列を解析し、1:2:3.4
各数字をキャプチャします。スペースが許可され、3
必要な場合のみです。