
[code]

      li id="result_0" data-hoge="4592105095" class="s-result-item"
    
[/code]

[code]

    4592105095
    
[/code]

answerがこうなるようにしたい  
よろしくお願いします。


CC BY-SA 3.0
2015-06-15T03:20:09.087
11354
2015-06-15T22:33:43.480
10049
question
正規表現
正規表現について


言語の指定がなかったため、JavaScriptを使って回答いたします（他言語でも表現が異なるだけで同様の考え方となります）。

[code]

    var regexp = new RegExp('data-hoge="(.*?)"');
    var result = regexp.exec('li id="result_0" data-hoge="4592105095" class="s-result-item"');
    alert(result[1]);
    
[/code]

マッチした値を取り出すために()を使います。()で囲んだ値はその()の個数分、結果の配列に1から順に入っていきます。今回は1つだけなのでインデックス1に入っています。

また正規表現の最短一致を使う必要があります。そのために(.*?)の?をつけています。?がないと、`4592105095" class="s-result-
item`という結果となります。これは最後の「"」まで一致させてしまうためです。?を使うことで表現に最短で一致するものにマッチさせることができます。


CC BY-SA 3.0
2015-06-15T04:28:00.657
11359
2015-06-15T04:28:00.657
4464
11354
answer


正規表現使った置換ですかね？  
検索文字列`data-hoge="(.*?)"`  
置換文字列`$1`  
でも良いし、単純に数字をhitさせたいのであれば、`(?<=data-hoge=").*?(?=")`とかですかね。


CC BY-SA 3.0
2015-06-15T04:36:51.557
11360
2015-06-15T04:36:51.557
2383
11354
answer


PHP でDOM を使う方法

[code]

    <?php
    $src = 'li id="result_0" data-hoge="4592105095" class="s-result-item"';
    $dom = new DOMDocument();
    $dom->loadHTML("<html><body><" . $src . "/></body></html>");#厳密でなくて良いｗ
    $answer = $dom->getElementById('result_0')->getAttribute('data-hoge');
    echo $answer;
    ?>
    
[/code]


CC BY-SA 3.0
2015-06-15T22:33:43.480
11381
2015-06-15T22:33:43.480
5044
11354
answer