Categories
SugiBlog ホームページ制作・システム開発|大阪

正規表現の最短一致

正規表現の文字列検索にて、最短一致を検索します。
デフォルトは最長一致ですが、量指定子("*"、"+"、"{}"等)の後に"?"を付けることで最短一致に変更できます。

Visual Basic

Dim regEx As Object
Dim Matches As Variant

'正規表現オブジェクト
Set regEx = CreateObject("VBScript.RegExp")

regEx.Pattern = "あ.+お" '"あ"で始まり"お"で終わる文字列を表す
                         '正規表現(最長一致)

'文字列全体とマッチする
MsgBox regEx.Replace("あいうえおあいうえおあいうえお", "AIUEO") 

regEx.Pattern = "あ.+?お" '"あ"で始まり"お"で終わる文字列を表す
                          '正規表現(最短一致)
'最初の"あいうえお"のみマッチする。
MsgBox regEx.Replace("あいうえおあいうえおあいうえお", "AIUEO") 

PHPの場合

<?php

$args    = "<h1>h1 test</h1>";
$pattern = "/<.*?>/";

?>
<?php

//全てのマッチする文字列を検索する
preg_match_all($pattern, $args, $matches, PREG_PATTERN_ORDER);
foreach($matches as $match)
{
	print_r($match);
}

?>

出力結果

Array
(
    [0] => <h1>
    [1] => </h1>
)
<?php

//マッチした文字列を置き換える
$args = preg_replace($pattern, "<p>", $args, 2);
echo $args;

?>

出力結果

<p>h1 test<p>
8,232 views

コメントを残す

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