2016-06-25 13 views
0
$name = 'Canon OEM BC-30e BK'; 
preg_match("/OEM (\\w+)/", $name, $matches); 
$hash = $matches[1]; 

この例で$ hashが 'BC-30e'を返すにはどうすればよいですか?今は「BC-」を返しています。私は正規表現を学ぶのがちょっと新しいので、結果を意図するのに苦労しています。私はhttp://regexr.com/を1分ほど打ち切ろうとしており、この結果が難しいと感じています。 =(私の理解へpreg_matchダッシュを単語に含める正規表現ですか?

「W」は、それダッシュを除いている言葉、作っている。私は以下のようなものに変更したときにしかし、私は単に「B.」

$name = 'Canon OEM BC-30e BK'; 
preg_match("/OEM ([A-Za-z-])/", $name, $matches); 
$hash = $matches[1]; 

を取得し、誰かが当てることができます

preg_match("/OEM ([A-Za-z0-9-]+)/", $name, $matches); 
+0

「OEM([\\ S] +)」 – splash58

+0

完璧、ありがとうございます!それは私が探していたものです!私はあなたに信用を与えることができるように答えとしてこれを投稿してもらえますか? – ihateartists

答えて

2

あなたが見つけることができます?私はここで間違ってやっているかについていくつかの光、私が最も感謝だろう=)

+0

これは完璧に働いた、ありがとう! – ihateartists

+0

あなたは歓迎です – splash58

1

は、あなただけの複数の文字にマッチし、あなたの最後の正規表現で数字を追加する必要があります空白以外の文字:

/OEM ([\\S]+)/ 
+0

私はOPが望んでいるものを返さない – splash58

+0

@ splash58は正しいこれは同じ 'BC-'結果を返しました – ihateartists

+0

数字の数字が編集された文字クラスから欠落しています。 –

関連する問題