5

(JFK)正規表現のような文字列または正規表現を使用して、空港コードを見つけようとしています[FRA]

言及された空港コードが正しいかどうかを確認する必要はありません。中括弧には、ほぼすべての 3 つの大文字を含めることができます。

丸括弧では機能しますが、角括弧では機能しない私の現在のソリューションは次のとおりです。

[((\[]([A-Z]{{3}})[))\]]

ありがとう!

4

3 に答える 3

10

正規表現が一致しすぎているようです。これを試してください:

^[(\[][A-Z]{3}[)\]]$

^ 行の先頭に一致します (必要な場合と不要な場合があります)

[(\[](または 一致する文字クラスです。[

[A-Z]{3}大文字 3 文字に一致

[)\]])または一致する文字クラスです。]

$ 行末に一致します(必要な場合と不要な場合があります)

テスト結果を見るにはここをクリック

[]は正規表現の特殊文字であり\、リテラル文字が必要であることを示すためにa でエスケープする必要があることに注意してください。

お役に立てれば

于 2012-07-03T12:12:17.180 に答える
3

(1) 単一の一致するグループ内の文字を一致させ、(2) 括弧または括弧 (それぞれの 1 つではなく) のみに一致させたい場合、それは非常に困難です。1つの解決策は次のとおりです。

.([A-Z]{3}).((?<=\(...\))|(?<=\[...\]))

最初の部分は文字と一致し、末尾の混乱は括弧/括弧をチェックします。

http://fiddle.re/u19vを参照してください- これは and に一致しますが、一致[ABC](DEF)ません(PQR](「正しい」答えは一致します)。

一致する括弧が必要な場合は、キャプチャする括弧を の外側に移動し.ます。

(.[A-Z]{3}.)((?<=\(...\))|(?<=\[...\]))

ここでの根本的な問題は、正規表現が、値のペア (括弧や括弧など) を希望どおりに一致させるほど強力ではないことです。したがって、異なる種類のペアはそれぞれ個別に処理する必要があります。

于 2012-07-03T12:16:46.053 に答える
0

理解しやすく、より方言にとらわれず、正しい:

^([A-Z][A-Z][A-Z])\|\[[A-Z][A-Z][A-Z]\]$

正規表現の方言によっては、括弧とパイプのエスケープを変更する必要がある場合があります。

于 2012-07-03T14:06:32.317 に答える