匹配两个或三个单词和可选项

时间:2013-01-14 22:56:49

标签: regex

我在过去的一篇论文中尝试了一些问题,但我特别挣扎于此。 目前我正在思考一些事情:

([A-Z]*),? ([A-Z]*) ([A-Z]*)?

但这似乎不起作用,因为我确定我的格式/一般都是错误的。请帮忙吗?

如果您想知道这个问题是下风,那么您就知道我想要实现的目标。 非常感谢。

  

个人姓名应包含一个姓氏和一个或多个姓氏。如果姓   放在姓氏前面,然后姓氏后面必须加逗号。这里   是一些例子:

     
      
  • GRAHAM ARTHUR CHAPMAN
  •   
  • ERIC IDLE
  •   
  • GILLIAM,TERRY
  •   
  • TERRY JONES
  •   
  • CLEESE,JOHN MARWOOD
  •   
  • MICHAEL PALIN
  •   
     

您如何使用egrep命令查找包含个人姓名的行?您可以   假设名称仅以大写字母书写。

2 个答案:

答案 0 :(得分:2)

^[A-Z]+,?( [A-Z]+)+?$

这样做是为了确保该行以一个字母开头,后面跟一个逗号,然后是一个由一个空格后跟至少一个字母组成的任何其他单词组。

答案 1 :(得分:1)

你的正则表达式只允许两个名字。使用它(不捕获组):

[A-Z]+,?( [A-Z]+)+

我已将*更改为+ s,因为您只会将两个空格匹配。