window.onload = function() {
dp.SyntaxHighlighter.ClipboardSwf = ‘http://tmh.main.jp/lib/js/dp.SyntaxHighlighter/Scripts/clipboard.swf’;
dp.SyntaxHighlighter.HighlightAll(‘code’);
};

メタ文字

. 改行を除く任意の1文字
* 直前のパターンの0回以上の繰り返し
+ 直前のパターンの1回以上の繰り返し
? 直前のパターンの0回または1回
^ 行頭 $行末

(最小マッチ方式の繰り返し)
*? 直前のパターンの0回以上の繰り返し
+? 直前のパターンの1回以上の繰り返し
?? 直前のパターンが0回または1回現われる

[…] クラス化 囲まれた文字のどれかとマッチ(文字は1文字ずつ分解されて判定)。
[^…] 否定クラス化
(…) パターンのグループ化

w 英単語構成文字 [0-9A-Za-z_]と同義
W 英単語構成文字以外 「[^0-9A-Za-z_]」と同義
s 空白文字 [ tnfr]と同義
S 空白文字以外 [^ tnfr]と同義
d 数字 [0-9]と同義
D 数字以外 [^0-9]と同義

後方参照(Perl)

例1 検索語を「(w+)Editor」、 置換語を「$1Soft」とすると、 ‘Editor’の部分を‘Soft’に置き換えた文字列になる( ‘K2Editor’に対して行えば‘K2Soft’になる)。

例2

FORMULA-1:3000
FORMULA-3:2000
という文字列に対して 「([w-]+):(d+)」で検索すると、 「$1」には ‘FORMULA-1’,‘FORMULA-3’といった文字列が、 「$2」には ‘3000’,‘2000’といった文字列が、入ってくる。

先読み(?=pattern)(Perl)
ファイルのリストから「[^]+(?=.txt)」 で検索を行えば、拡張子がtxtのファイルのファイルタイトルだけを抽出

HTML切り出し

最長一致
/<div class=”section”>(.*)</div><!– section –>/
最短一致
/<div class=”section”>(.*?)</div><!– section –>/
画像リンク
$pattern = “/href=”(https?|ftp)(://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+).(jpg|JPG|jpeg|JPEG|png)/”;
メアド
/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/

[0-9]    半角数字
[A-Z]    半角英大文字
[a-z]    半角英小文字
[0-9]    全角数字
[A-Z]    全角英大文字
[a-z]    全角英小文字
[ぁ-ん]    全角ひらがな
[ァ-ヶ]    全角カタカナ

参考サイト

正規表現サンプル
http://hodade.adam.ne.jp/seiki/

phpサンプル

<?php
/////////////////////////////////////////////////////////////////////////////////////////////////*キャッシュ処理*/ 
  
 // Cache_Liteのプログラムを読み込む 
 require_once 'Cache/Lite.php'; 
 //ライブラリ単体での読み込みも可
 //require_once './Lite.php'; 
  
 // 設定項目 
 $cacheOptions = array ( 
 'cacheDir' => 'cache/', // キャッシュが保存される場所 
 'lifeTime' => 3600, // 指定した秒数はキャッシュを使う、nullにすると無期限 
 ); 
  
 $url = 'http://shuugi.in/giseki'; 
 $cacheId = $url; 
 $objCache = new Cache_Lite($cacheOptions); 
  
 if ($cache = $objCache->get($cacheId)) { 
 $buf = $cache; // キャッシュが見つかったときはここで代入 
 } else { 
 // キャッシュがなかったとき、lifeTimeより古くなっているときはここで処理 
 $buf = file_get_contents($url); 
 //$objCache->remove($cacheId);//キャッシュ削除 
 $objCache->save($buf, $cacheId); // キャッシュとして保存 
 } 
 ?> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
/////////////////////////////////////////////////////////////////////////////////////////////////*データ取得*/ 
//1.読み込み
//$str = file_get_contents("http://weather.yahoo.co.jp/weather/jp/13/4410/13202.html"); 
$str = $buf; //キャッシュ読み込み
$str2 = ereg_replace("r|n|t","",$str);//改行などを除去

//2.正規表現
$pattern = "/<div class="section">(.*)</div><!-- section -->/";
//$pattern = "/<div class="section">(.*?)</div><!-- section -->/";//最短一致
if(@preg_match($pattern,$str2,$match)){ //@でエラー回避
//if(@preg_match_all($pattern,$str2,$match)){ //最短一致で全てを取り出す
//置換
$match[0] = str_replace("銘柄情報", "議席獲得情報", $match[0] ); 
echo ( $match[0]."" );
//preg_match_allで取り出した要素が複数の場合($match[0][1],$match[0][2]・・・)、以下で全て表示させる。 
//foreach ($match[0] as $hoge) { 
// echo $hoge; 
//}
}
?>

2 Replies to “正規表現備忘”

  1. admin says:

    改行削除
    $str2 = preg_replace(‘/(?:n|r|rn)/’, ”, $str );

    返信
  2. admin says:

    改行削除

    $value = str_replace(array(“rn”, “r”, “n”), ”, $value);

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です