2015-10-04 464 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

相关问题