2017-04-07 3 views
3

アドレスから郵便番号を抽出するカスタム.NETアプリケーションの式を処理しようとしています。大文字アルファベットの.NET Regex否定先読み

アドレスは、次の式

\d{3,5}-\d{3,5}|\d{5}(?![A-Z]{2}) 

を使用し

12345 Example Street, NY 10019 United States 

単一ラインであるが、これは12345ならびに郵便番号10019両方をフェッチしているように見えます。負の先読みに2つの大文字しか書いていないことを考慮して、2文字のNYコードが先行している郵便番号だけを考慮する必要はありませんか?私はここで間違って何をしていますか?私はZIPコードとして|演算子を使用しています

12345-12345であるだけでなく、12345形式

私はあなたがここに後読みを使うことhere

+1

なぜ.NET regex構文をサポートしていないオンライン正規表現テスターで.NET正規表現をテストしていますか? regexhero.netまたはregexstorm.netを使用してください。 –

+0

おっと、それは分かりませんでした。どうもありがとう! – blackystrat

答えて

2

をテストしていた正規表現を確認してください:

\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5} 

regex demo

(?<=[A-Z]{2}\s+)は5桁の前に2つの大文字と1つ以上の空白を必要とします。

あなたが指定した桁数と一致することを確認するには、単語の境界\b使用できます

\b(?:\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5})\b 

another demoを参照してください。

+1

ありがとうございました。魅力のように働く – blackystrat

+0

もう一度やりました! – blackystrat

関連する問題