2017-10-03 6 views
0

だから私はデンマークでは、個人IDを見つけるために、この正規表現を作った:数字の正規表現ですか?

[0-3][0-9][0-1][1-9]\d{2}[-\s]\d{4}?[^0-9]*|[0-3][0-9][0-1][1-9]\d{2}\d{4} 

だから、順番に番号を検出します:

1405901190 
140590 1190 
140590-1190 

しかし、どのように私は最初の6を検出した1つの正規表現コードを作るのですか3行のそれぞれの数字。と3行すべての4つの最後の数字を検出するnr2正規表現ですか?

2つのコードを探しています。

おかげ

+2

だけでキャプチャグループを使用し、2つの正規表現を持ってする必要はありません。 ['^([0-3] \ d [0-1] [1-9] \ d {2})[ - \ s]?(\ d {4})$'](https:// regex101 .com/r/RZxHLw/3) –

+0

しかし、私は私のプログラムを騙すために2行が必要です:)私のプログラムは最初の6語だけを読むので、フルラインは動かないでしょう。私がそれを2行に分ければ、それを働かせることができます。 :) – Deathleecher

+1

プログラムとは何ですか?あなたがやっていることの目的は何ですか?あなたの質問を必要な詳細で更新してください。また、あなたが使っている正規表現ライブラリを知ることも重要です。 [this regex](https://regex101.com/r/dOP7ZN/1)と[this one](https://regex101.com/r/dOP7ZN/2)を参照してください。 –

答えて

-1
grep -oP '[0-3][0-9][0-1][1-9]\d{2}' /tmp/test2 
140590 
140590 
140590 

grep -oP '\d{4}$' /tmp/test2 
1190 
1190 
1190 

cat /tmp/test2 
1405901190 
140590 1190 
140590-1190 
+0

最初のコードは正常に動作します。しかし、 "\ d {4} $"は "140590-1190"の4つの数字でのみ動作し、他の行の4つの数字を取る。 – Deathleecher

+0

私は上記のように3つの行すべてから取ります。 –

+0

他の人が2つのキャプチャグループを使用することを示唆しているので、これを書くことをお勧めしますが、2つの別々のコマンドが必要でした。 –

関連する問題