如何将“lastname,firstname”拆分为单独的字符串?

时间:2008-12-23 20:28:10

标签: regex perl

将字符串“Parisi,Kenneth”分为“Kenneth”和“Parisi”的最佳方法是什么?
我还在学习如何用这些正则表达式解析字符串,但不太熟悉如何设置等于匹配字符串的变量。输出匹配的(或不匹配的)字符串。

2 个答案:

答案 0 :(得分:13)

my ($lname, $fname) = split(/,\s*/, $fullname, 2);

注意第三个参数,它将结果限制为两个。不是严格要求,但仍然是一个很好的做法。

答案 1 :(得分:2)

这样的事情应该可以解决没有unicode字符的名称:

my ($lname,$fname) = ($1,$2) if $var =~ /([a-z]+),\s+([a-z]+)/i;

要打破它:

  • ([a-z]+)匹配一系列字符并将其分配给第一组$ 1
  • ,匹配逗号
  • \s+匹配一个或多个空格(如果空格是可选的,请将+更改为*)
  • ([a-z]+)匹配一系列字符并将其分配给第二组$ 2
  • i不区分大小写的匹配

您可以更改字符类[a-z]以包含您认为对名称有效的字符。