我没有为我的问题找到一个好的正则表达式。
我可以拥有这些字符串:
我搜索正则表达式只找到姓氏。 另一个正则表达式只能找到名字。
我试过[a-zA-Z'' -]{1,}
和(?<=\^)(.*?)(?=\^)
但我没有符合我所有情况的正则表达式。
Lastname正则表达式,必须在第一个字符'^'之前返回字符串。 Firstname正则表达式必须在第一个字符'^'后面返回字符串,并在字符串的末尾或下一个字符'^'处停止。
目前我不需要检索MiddleName,Prefix和Suffix。
答案 0 :(得分:1)
答案 1 :(得分:1)
您需要的正则表达式可以是:
/\d+\s:\s([^\^]+)\^([^\^]+)/g
PHP内部:
$str = "1 : Lastname^Firstname^MiddleName^Prefix^Suffix 2 : Lastname^Firstname^^^ 3 : Lastname^Firstname";
//the 'g' flag doesn't exist in PHP, instead use preg_match_all function:
$regex = "/\d+\s:\s([^\^]+)\^([^\^]+)/";
// PHP >= 5.2.2
preg_match_all($regex, $str, $matches);
print_r($matches[1]); //Last names
print_r($matches[2]); //First names
答案 2 :(得分:0)
现在无法测试,但它应该类似于以下内容:
(\w+)\^(\w+)(\^\w+){0,3}
第1组和第2组分别返回姓氏和名字。
答案 3 :(得分:0)
考虑以下正则表达式...
姓氏:^\w*(?=\^)
名字:(<=^\w*\^)\w*(?=\^*)
祝你好运!