正直なところ、あなたの機能は「一つのことをする」かもしれませんが、あなたが自分で述べたように
正規表現を複数の関数に分割し始めることができますが、
つまり、正規表現コードは多くのことを実行します。そして、それはより小さく、個別にテスト可能なユニットに分解できると思います。ただし、これが良いアイデアである場合、答えるのは簡単ではありません(特に実際のコードを見ずに)。そして、正しい答えは「はい」でも「いいえ」でもないかもしれませんが、「まだではありませんが、次回はその正規表現で何かを変更する必要があります」。
しかし、実際には言語を切り替えるので、実際にはそのように読みやすさが失われるように感じます
そして、これが核となるポイントです-あなたは正規表現言語で書かれたコードを持っています。この言語は、それ自体では抽象化の優れた手段を提供しません(また、「名前付きキャプチャグループ」を関数の代替として考えていません)。したがって、「正規表現言語で」リファクタリングすることは実際には不可能であり、小さな正規表現をホスト言語と織り交ぜると実際に読みやすさが向上しない場合があります(少なくとも、そう感じますが、疑問があります。 。だからここに私のアドバイスがあります
コードを別の上級開発者に見せてください(おそらく/codereview//にあります)に見せて、他の人があなたのやり方で読みやすさについて考えていることを確認してください。他の人があなたほど読みやすい100行の正規表現を見つけられないかもしれないという考えを受け入れてください。「小さな破片に簡単に壊れない」という概念は、2番目の目で克服できます。
実際の進化を観察します-新しい要件が到着し、それらを実装してテストする必要があるとき、あなたの光沢のある正規表現はまだとてもよく見えますか?あなたの正規表現が機能する限り、私はそれに触れることはありませんが、何かを変更する必要があるときはいつでも、この1つの大きなブロックにすべてを入れることが本当に良いアイデアであるかどうかを再検討します-そして(真剣に!)小さいピースは良いオプションではありません。
保守性を観察してください-現在のフォームで正規表現を効果的にデバッグできますか?特に、何かを変更する必要があり、テストで何かがおかしいと言われた後、根本原因を見つけるのに役立つreg expデバッガーがありますか?デバッグが困難になった場合、設計を再検討する機会にもなります。