2015-10-04 43 views
0

我們有一個文件只包含帶空格和名字的姓氏。正則表達式來查找「姓氏名」

文件看起來是這樣的:

Alex Roni 
ToMmy Rid 
Christian Olav 
JohHn PeTter 
Flara Sbastian 
Hovard Kai 
Runne Nervin 
OlaAf RoOni 
Olaf Roni 

我們希望到grep這個文件中的4種方式。

首先,我們希望它是找到任何姓氏名字用是N,O,P,Q開始,R.

我寫了下面的代碼:

(^[N-R]) 

第二次找到姓氏和名字是兩個字母長度完全相同。

我寫下面的代碼。但似乎不起作用。它必須用grep Olaf Roni

(^[N-R]{4}+)([N-R]{4}+) 

第三個第一和lastnames不包含s。這是否正確,工作也是如此。

^[^s]*$ 

4rd find lastname包含兩個大字符,如MacDonald。第二個大字符可以出現在名字的任何地方。

此代碼不起作用。

^(.*?[A-Z]{2,}.*)+(.*?[A-Z]{2,}.*)$ 
+0

'[N-R] {4} +'沒有做什麼,你認爲它。看起來你應該從閱讀正則表達式教程開始。 – Biffen

+0

你有權利,返回null。 – Alex

+0

作業,有什麼機會? –

回答

2

您可以使用前瞻:

^(?=\w{4}\s\w{4}$)[N-R].* 

Demo


/[NR] /的正則表達式只匹配N,O,P,Q,R範圍內的一個字符。如果使用[NR] {4},則表示要匹配4個字符相同的範圍,比如NNNN就是一場比賽。

換一個名字爲你描述,你會想:

[N-R][a-zA-Z]{3} 

^^^    One letter in the range N-R 
     ^^^  an ASCII letter 
       ^^ proceeding match 3 times 

所以兩個名字適合用空格隔開的模式將是:

^[N-R][a-zA-Z]{3} [N-R][a-zA-Z]{3}$ 

Demo

然後你可以爲您描述的其他限制添加額外的預覽。有在RexEgg HERE.

+0

感謝您的文件工作正常。 :) – Alex

+0

太棒了。您可以添加更多預覽的其他條件。如果它正在工作,請[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – dawg

+0

此代碼'(^ [NR])'greps任何在N和R之間開始的姓氏,但是我們如何才能在N和R之間做一個名字相同的jobb。 – Alex

相關問題