2017-11-22 18 views
-2

私は数字のグループを抽出するために必要な文字列のコレクションを持っています。下のパターンでは、値をzzzzに選択しようとしています。RegEx - 最初の4桁のグループに一致します。

xxxx - yyyy - aaaa - zzzz - any text here - any text here <= Example #1 

xxxx - yyyy - zzzz - any text here - any text here <= Example #2 

私はデータについては、以下を知っている:

  1. xxxは常にyyyyはZZZZは、常に正確に4桁
  2. から構成されることになる数字やアルファベット文字
  3. 可能性が3桁
  4. になります
  5. aaaaは任意の文字列である可能性がありますが、例2のように完全に欠落している可能性もあります。

私はもともと、正規表現(?!1111)\d{4}のようにNegative Lookaheadを使うことができると考えていました。なぜなら、シーケンス1111は通常4桁の数字の前に来たからです。

432から1111 - - ストア

411から1111 - - 学校

それは以下のように必ずしもそうではありませんが。

321 - StorageZone - - また倉庫

は時々1111私はキャプチャしたかった位置にありました。

002から1111 - - マシンルーム(それは1111年の2番目のインスタンスであるので、ここで私は111を選択したい)

981から0110 - - 地下室(ここでは1111が数Iであります

私はzzzzの値をキャプチャする方法に困惑し、いくつかの正規表現のアドバイスを使用することができます。ありがとう。 JavaScriptの表記で

+0

「任意のテキスト」は4桁の数字ですか? –

+0

@PM - いいえ...決して4桁にはなりません – webworm

答えて

0

それはこのようなものになります。

^\d{3} - [a-zA-Z0-9]{1,}?(- .*?)?? - (\d{4})(- [^0-9]*){1,2}$ 

、あなたが文字列の最後 4桁の番号が必要であることをここでの考え方第二のキャプチャグループに

が必要になります。

これでテストできますDEMO

関連する問題