php5です。
THE HOGExxxx
The HOGExxxxx
the HOGExxxxx
THEHOGExxxxx
TheHOGExxxx
zha HOGExxxx
yhaHOGExxxxxx
上記文字列の the, THE, The が先頭についている文字列を抽出したいのです。
選択されないのは、下2行です。
正規表現の部分はどのように書くのでしょうか?
よろしくお願いします。
これでどうでしょう?
<?php $data =<<<EOD THE HOGExxxx The HOGExxxxx the HOGExxxxx THEHOGExxxxx TheHOGExxxx zha HOGExxxx yhaHOGExxxxxx EOD; $lines = split("\n", $data); $result = array(); foreach ($lines as $line) { if (preg_match('/^the/i', $line)) { array_push($result, $line); } } var_dump($result); ?>
以下の様な出力になります。
array(5) { [0]=> string(12) "THE HOGExxxx" [1]=> string(13) "The HOGExxxxx" [2]=> string(13) "the HOGExxxxx" [3]=> string(12) "THEHOGExxxxx" [4]=> string(11) "TheHOGExxxx" }
/^the/i が正規表現ですが、大文字小文字を区別しない i 修飾子を付けるのがこの質問のミソですね。
これでどうでしょう?
<?php $data =<<<EOD THE HOGExxxx The HOGExxxxx the HOGExxxxx THEHOGExxxxx TheHOGExxxx zha HOGExxxx yhaHOGExxxxxx EOD; $lines = split("\n", $data); $result = array(); foreach ($lines as $line) { if (preg_match('/^the/i', $line)) { array_push($result, $line); } } var_dump($result); ?>
以下の様な出力になります。
array(5) { [0]=> string(12) "THE HOGExxxx" [1]=> string(13) "The HOGExxxxx" [2]=> string(13) "the HOGExxxxx" [3]=> string(12) "THEHOGExxxxx" [4]=> string(11) "TheHOGExxxx" }
/^the/i が正規表現ですが、大文字小文字を区別しない i 修飾子を付けるのがこの質問のミソですね。
やっとできました。
ありがとうございました!
> i 修飾子・・・
勉強になります。
the が大文字小文字を区別しないという事なら、
$str = array( 'THE HOGExxxx', 'The HOGExxxxx', 'the HOGExxxxx', 'THEHOGExxxxx', 'TheHOGExxxx', 'zha HOGExxxx', 'yhaHOGExxxxxx' ); foreach($str as $s){ print $s; if (preg_match('/^[tT][hH][eE].*/', $s)){ print " <-- match\n"; }else{ print " <-- unmatch\n"; } } 結果は THE HOGExxxx <--- match The HOGExxxxx <--- match the HOGExxxxx <--- match THEHOGExxxxx <--- match TheHOGExxxx <--- match zha HOGExxxx <--- unmatch yhaHOGExxxxxx <--- unmatch
こんな感じ。
本当に例のように、 the, THE, The の3種だけが対象なら、
'/(the|THE|The).*/'
こんな感じでどうですか?
何度も壁にぶつかる正規表現です。
ご回答ありがとうございました。
やっとできました!
やっとできました。
ありがとうございました!
> i 修飾子・・・
勉強になります。