2014-03-25 66 views
0

我使用正则表达式+ PHP 我会匹配行匹配的前两个单词的前两个字母

例如,对于该行的第一个两个字的前两个字母:

Mr Christophe Mailler Jean Dupon 

我需要匹配:

Ch Ma 

我想这正则表达式:

(?:Mr|Mme)\s+\b([a-zA-Z][a-zA-Z]) 

但它只匹配Ch

请帮忙吗?

回答

2

您需要延长图案的第二个字匹配,太像这样:

(?:Mr|Mme)\s+([a-zA-Z]{2})\S*\s+([a-zA-Z]{2}) 

我也建议使用这样的模式在PCRE引擎服用Unicode support优势:

(?:Mr|Mme)\s+(\pL{2})\S*\s+(\pL{2}) 

例如:

$input = "Mr Christophe Mailler Jean Dupon"; 
preg_match("/(?:Mr|Mme)\s+(\pL{2})\S*\s+(\pL{2})/iu", $input, $output); 
echo $output[1] . ' ' . $output[2]; // Ch Ma 
+0

工作就像一个魅力!非常感谢你 – amorino

相关问题