【发布时间】:2008-12-23 20:28:09
【问题描述】:
将字符串“Parisi, Kenneth”分成“Kenneth”和“Parisi”的最佳方法是什么?
我仍在学习如何使用这些正则表达式解析字符串,但不太熟悉如何将 var 设置为等于匹配的字符串以及匹配(或不匹配)字符串的输出。
【问题讨论】:
将字符串“Parisi, Kenneth”分成“Kenneth”和“Parisi”的最佳方法是什么?
我仍在学习如何使用这些正则表达式解析字符串,但不太熟悉如何将 var 设置为等于匹配的字符串以及匹配(或不匹配)字符串的输出。
【问题讨论】:
my ($lname, $fname) = split(/,\s*/, $fullname, 2);
注意第三个参数,它将结果限制为两个。不是严格要求,但恕我直言,这是一个很好的做法。
【讨论】:
对于没有 unicode 字符的名称,这样的事情应该可以解决问题:
my ($lname,$fname) = ($1,$2) if $var =~ /([a-z]+),\s+([a-z]+)/i;
分解:
([a-z]+)匹配一系列字符并将其分配给第一组$1, 匹配逗号\s+ 匹配一个或多个空格(如果空格是可选的,将 + 更改为 *)([a-z]+)匹配一系列字符,并分配给第二组$2i 不区分大小写匹配您可以更改字符类 [a-z] 以包含您认为对名称有效的字符。
【讨论】: