perl regex中的未绑定变量

时间:2011-05-19 14:19:49

标签: regex perl

我有很多这样的行:

John Smith
Jane Doe
Dr. Bruce Wayne

我想将这些名称放入一个包含两列的csv文件:title和full name。 我正在使用正则表达式:/(\w*\. )?(.*)/,然后我打印"$1;$2"。问题是,在没有标题的名称中,perl会抱怨未初始化的值为$ 1。如何使用空字符串?

3 个答案:

答案 0 :(得分:7)

只需将正则表达式更改为:

my $re = qr/(\w*\. |)(.*)/;
 add alternation --^

答案 1 :(得分:4)

一般情况下,如果需要,可以在(?: )组中使用?刚用?如果省略捕获组将保留捕获变量undef,但您可以在捕获组内使用非捕获组:

/((?:\w*\. )?)(.*)/;

答案 2 :(得分:1)

要以另一种方式解决问题,Lingua-EN-NameParse可能有所帮助。

相关问题