我有这个平面文件,我想确保我只显示名字是Andrew的记录
00012 Andrew Carter
02349 John Smith
20089 Charlotte Andrew
每行按顺序包含三个字段:五位数的员工编号,名字和姓氏。每个字段由空格分隔。
答案 0 :(得分:2)
我想你想找到符合以下模式的所有行:
\d+\sAndrew.+
或者,正如@Sam Sullivan指出的那样,您还可以指定位数:
\d{5}\sAndrew.+
如果您设置了正则表达式选项以允许点匹配换行符,则可以使用[^\n]+
而不是最终.+
,正如@Sam Sullivan所指出的那样。但正如@Casimir et Hippolyte指出的那样,默认情况下,点与新行字符不匹配。
答案 1 :(得分:0)
([0-9]{5})\s(Andrew)\s([A-Za-z\s.,-]{1,})
每个括号将捕获三条信息。
00012
,Andrew
,Carter
这需要5个数字,一个空格,名称Andrew(区分大小写),另一个空格,然后是姓氏,包括姓氏和后缀。
第三次捕获是寻找大写字母a到z,或小写字母a-z,空格,句号,逗号或短划线
所以“Carter-Smith,Jr。M.D.”是一个有效的姓氏。
答案 2 :(得分:0)
首先,这是工具可以成为你朋友的情况。 查看 expresso:“http://www.ultrapico.com/expresso.htm” 它非常适合设计和测试正则表达式 还有 RegexCoach:http://www.weitz.de/regex-coach/ 哪个实际允许你像普通代码一样步骤正则表达式
关于你的问题 开始行^ 五位数:\ d \ d \ d \ d \ d 空间:\ w 姓名:安德鲁 空间:\ w 姓氏:[A-Za-z] + 结束:$
所以: ^ \ d \ d \ d \ d \ d \ wAndrew \ W [A-ZA-Z] + $
免责声明 - 未经测试,但非常自信:)