2012-05-08 10 views
1

もう一つの短い正規表現の問題があります。文字列を分割する際にregexの問題

基本的に私は、このようなような文字列を持っている:

cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH

私は、その文字列からわずかWSG-AP-LO-COMMON-SITE-APPSを取得しようとしています。このような

私がしようとしている何か:

preg_match('/[cn=.]+.*[^,.*]+$/', $info[0]['groupmembership'][0], $matches);

print_r($matches); 返します

Array 
(
    [0] => cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH,ou=WM,ou=SWQ,o=HEALTH 
) 

答えて

3

、これは最も簡単に行われます最初のカンマを、そして=に:区切り文字で分割することにより

$parts = explode(",", "cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH"); 
$cn = $parts[0]; 
list($component, $value) = explode($cn); 
echo $value; 

そして、あなたは本当に最初の部分のみを希望する場合は、あなたは別のlist()でそれを短縮することができます。

list($cn) = explode(",", "cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH"); 
list($component, $value) = explode("=", $cn); 
echo $value; 

しかし、あなたの場合を

preg_match('/cn=([^,]+)/', "cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH", $matches); 
var_dump($matches); 

array(2) { 
    [0]=> 
    string(29) "cn=WSG-AP-LO-COMMON-SITE-APPS" 
    [1]=> 
    string(26) "WSG-AP-LO-COMMON-SITE-APPS" 
} 

([^,]+)は次までのすべてを一致しますと、本当に正規表現でそれを行いたい、それが動作するはずですに続いてcn=

+0

感謝。ええ、私は彼らのリストのために爆発してそれをしたくなかった:P 私は5分待たなければならないが、それまでは、私の最初の生まれたことがあります。 – Menztrual

3

はこれを試してみてください:任意の単純区切られた文字列と同じように

preg_match("/cn=([^,]+)/", $string, $match); 
$match[1]; //WSG-AP-LO-COMMON-SITE-APPS 
1

これは、cn =の後のすべてがカンマが現れるまで一致します。

preg_match('/cn=([^,]+)/i', 'cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH', $result); 

var_dump($result); 

出力は:

Array 
(
    [0] => cn=WSG-AP-LO-COMMON-SITE-APPS 
    [1] => WSG-AP-LO-COMMON-SITE-APPS 
) 
0

PowerShellを使用するための私を許しますが、正規表現が同じである必要があり、私は思う:

([Regex]::Matches("cn=WSG-AP-LO-COMMON-SITE-APPS,ou=ZFD,ou=SVC,ou=IGH", "cn=([^,]+)"))[0].Groups[1] 
関連する問題