私は読みやすさとメンテナンスのためにコメントする必要がある複雑な正規表現をいくつか持っています。 Javaの仕様はかなり簡潔ですが、私はこの作業に長時間苦労しました。私はようやく私のバグをキャッチし、その答えとして、それを掲載する予定ですが、私は単純な名前パーサに私は(パターンの)サブコンポーネントをコメントしたいの例として正規表現Javaの正規表現にコメントを含める
を維持する上で他のアドバイスに感謝するだろう:
String testTarget = "Waldorf T. Flywheel";
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.)?\\s+([A-Za-z]+)";
Pattern pattern = Pattern.compile(patternS, Pattern.COMMENTS);
Assert.assertTrue(pattern.matcher(testTarget).matches());
編集:(?x)形式の例についてもお礼を申し上げます。
EDIT:@ geowa4には、埋め込まれたコメントを避けるための良い提案があります。 Sinnce javaと他の人が埋め込まれたコメントを提供しています。有用なケースは何ですか? (私は事件があると思うが、私は他人を見ることに興味があるだろう)。
EDIT:正規表現は、オプションの初期うまくをサポートしていないとなり@mikej以下に示すようとして、より良い:私が見つけ
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
それが初期
ありがとう - これは便利なアプローチです。また、ドメイン固有言語を使用して正規表現を生成する別のアイデアも指摘しました(http://flimflan.com/blog/ReadableRegularExpressions.aspx)。 (これは実際に私のアプリケーションでは科学データ用のコンパイルされた正規表現の複雑な組み合わせがありますが、これはこの質問の範囲外です)。 –
これはきれいで清潔なソリューションです。 optionalWhiteSpaceはおそらくmandatoryWhiteSpaceでしょうか? :) – crunchdog
ありがとうcrunchdog。私は私を捕まえたと思うのは、実際にOPのパターンに制限があるということです.Fred Bloggsのような中間のイニシャルなしの名前があれば、最初の名前と姓の間に2つのスペースが必要です。パターン内で\ s +。私はこれに対処しようとしていましたが、私はパターンをOPのものと同等にするための答えを編集しました。 – mikej