2017-05-25 8 views
1

の正規表現を検索する必要があります。航空会社指定は、2つの英数字(英語アルファベットの任意の文字または数字)とオプションの文字で構成されています。フライト番号は、1〜4桁の数字(数字)とオプションの1文字の操作可能な接尾辞で構成されています。すべての文字は大文字です。フライト番号

(?<!([A-Z0-9]))(([A-Z]{2}|[A-Z]\\d|\\d[A-Z])\\s?\\d{3,4})(?:\\D) 

これは、次の出力は動作しません:すべてのヘルプは高く評価され

IEL2 
9AI0923 

これは、これまでのところ、私の正規表現があります。ありがとうございました。

+4

は、正規表現に直接あなたの説明を翻訳するには、[A-Z0-9] {2} [AZ] '得ると思います([0-9] {1、? 4} [AZ]?) '。あなたのものははるかに複雑です。あなたの説明に含まれていないフライト番号に制限がありますか? – Blender

答えて

4

あなたの説明に基づいて、あなたはこの正規表現を使用することができます

^[A-Z\d]{2}[A-Z]?\d{1,4}[A-Z]?$ 

RegEx Demo

を任意の後読みや先読みを使用する必要はありません。 Javaでは

を使用します。

final String re = "^[A-Z\\d]{2}[A-Z]?\\d{1,4}[A-Z]?$"; 
+0

なぜ '^'と '$'が気になるのですか?マッチングのためにこれらは必要ありません。 –

+0

IMO 'matches()'メソッドはそれを必要としませんが、明示的にする方が良いです。一部の読者はPHP、Javascriptのような他の言語でこの正規表現を使うかもしれませんが、 '^'と '$'が必要です。 – anubhava

+0

この正規表現は質問に定義されている要件に従っており、 'A1B2'はその要件を満たしています。追加または異なる要件がある場合、OPは私たちにより良いことを伝えることができます。 – anubhava