1

ソリューションで特定のタイプの数値オブジェクトを「きれいに」しようとしています。この特定のタイプには、次の可能な表現と、それらのきれいな表現があります。

xxxxxyyyyyyy  => xxxxx-yyyyyyy
xxxxxyyyyyyyz => xxxxx-yyyyyyy-z

基本的に、タイプは を表す 5 桁FieldA、 を表す 7 桁FieldB、および a を表すオプションの桁で構成されCheckDigitます。次の正規表現/置換パターンを使用します。

Regex:       ^(?<FIELDA>\d{5})(?<FIELDB>\d{7})(?<CHECKDIGIT>\d?)$
Replacement: ${FIELDA}-${FIELDB}-${CHECKDIGIT}

... 結果:

xxxxxyyyyyyy  => xxxxx-yyyyyyy-  (wrong)
xxxxxyyyyyyyz => xxxxx-yyyyyyy-z (correct)

正規表現/置換ペアだけを使用して最初の表現を修正することは可能ですか? 2 つの異なる正規表現を使用してこの作業を行うことができますが、それよりも洗練されたソリューションが必要です。単一の正規表現/置換ペアを使用するもの。

PS。Java 1.7 を使用しています。

4

1 に答える 1

0

ツール内の単一の正規表現でこれが可能だとは思いません。次のように 2 つの RegEx を使用できます。

まず、番号を-中間に置き換えます。

探す:^(\d{5})(\d{7})(\d+)?$

交換:$1-$2-$3

最初の交換

次に、末尾のダッシュを削除します。

探す:^(\d{5})-(\d{7})-$

交換:$1-$2

2 回目の交換

最終結果

于 2016-02-17T03:15:38.673 に答える