1

我在考试过去的论文中尝试了一些问题,但我特别在这个问题上苦苦挣扎。目前我在想一些事情:

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

但这似乎不起作用,因为我确定我的格式/它通常是错误的。请帮忙?

如果您想知道问题如下,那么您对我想要实现的目标有所了解。非常感谢。

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

  • 格雷厄姆·亚瑟·查普曼
  • 埃里克空闲
  • 吉利亚姆,特里
  • 特里·琼斯
  • 克里斯,约翰·马伍德
  • 迈克尔·佩林

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

4

2 回答 2

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

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

于 2013-01-14T23:06:15.267 回答
1

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

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

我已将 s 更改*+s,因为您的也仅匹配两个空格。

于 2013-01-14T23:03:26.763 回答