大概需求:从一段文字把英文的姓名提取出来
分析:1.根据首字母大写来提取,如果大于1个的连续的首字母大写的单词,可认为是姓名
2.姓和名之间可以多个空格,比如:Abc Defg
3.可匹配 Simon C Whitehead 这样的名字
4.姓名的单词只匹配2或3个(如果连续这样的单词多于3个的话,认为不是姓名了)
5.姓名中不包含任何符号(如果有其他符号的,可认为不是姓名)
6.只匹配第一个符合的。
因为工作的关系,需要进行模糊数据分析,故有以上的需求,求高手帮忙
分析:1.根据首字母大写来提取,如果大于1个的连续的首字母大写的单词,可认为是姓名
2.姓和名之间可以多个空格,比如:Abc Defg
3.可匹配 Simon C Whitehead 这样的名字
4.姓名的单词只匹配2或3个(如果连续这样的单词多于3个的话,认为不是姓名了)
5.姓名中不包含任何符号(如果有其他符号的,可认为不是姓名)
6.只匹配第一个符合的。
因为工作的关系,需要进行模糊数据分析,故有以上的需求,求高手帮忙
var reg = /(([A-Z][A-Z|a-z]+)\s+){2,3}/g;
var str="fuck you DAM Mike Gohn Fuck as a";
var ss = str.match(reg);
alert(ss);
</script>
/(([A-Z][a-z]+)\s+){2,3}/
还是不成,一个都没出来
$str = "fuck you Dam Mike s Gohn Fuck ss a";
preg_match('/(([A-Z][a-z]+)( ?)){2,3}/', $str, $names);
echo $names[0];
print_r($r);如果只要匹配一个,则 preg_match($p, $s, $r);
$str = "fuck you Dam Mike s Gohn Fuck ss a";
preg_match('/(([A-Z][a-z]+)( ?)){2,3}/', $str, $names);
echo $names[0];
$p = "/(?:(?:\b[A-Z][A-Za-z]*) +){2,3}/";
这个也没问题,不过发的晚了