0

私はこのような正規表現を作成しました:

^[0-9][0-9][A-Z][A-Z][a-z]_([0-9]{1,10})_([0-9]{1,11})_([0-9]{1,11})$

01BRa_1_1_1から99BRz_9999999999_99999999999_99999999999の範囲の値が表示されます

私の問題は、値0を_number_number_numberから除外し、番号1から開始する必要があることです。さまざまな式を試しましたが、正しい式が見つかりません。

誰かがこの助けを解決する方法を知っているなら、それは良いことです。どうも。

目標は、0_0_0、00_00_00、000_000_000、および0が最初の数値であるすべての状況を排除することです。したがって、これら3つのフィールドの最初の組み合わせは1_1_1になります。

私はこれをJavaで使用しています(1つのコメントに返信するため)が、多かれ少なかれこれは単なるパターンであるという関連性はわかりません。

これで解決しました:

^[0-9][0-9][A-Z][A-Z][a-z]_([1-9][0-9]{0,9})_([1-9][0-9]{0,10})_([1-9][0-9]{0,10})$
4

1 に答える 1

0

目標が 0 に等しい値 (0、00、000 など) を排除することである場合、次のような式が機能する可能性があります。

^[0-9][0-9][A-Z][A-Z][a-z]_(?!0+_)([0-9]{1,10})_(?!0+_)([0-9]{1,11})_(?!0+$)([0-9]{1,11})$

もちろん、これは、可変長ゼロ幅アサーション (別名「先読み」) をサポートする正規表現エンジンに依存します。どのフレーバーを使用しているかを知るのに役立ちます。(のツールチップから: 「使用しているプログラミング言語またはツールを指定するタグも含めてください。」 )

目標が 0 で始まるもの (0、01、001 など) をすべて削除することである場合、次のような式が機能する可能性があります。

^[0-9][0-9][A-Z][A-Z][a-z]_([1-9][0-9]{0,10})_([1-9][0-9]{0,10})_([1-9][0-9]{0,10})$
于 2013-03-05T13:53:35.263 に答える