正規表現を非貪欲にするにはどうすればいいですか? 質問する

正規表現を非貪欲にするにはどうすればいいですか? 質問する

jQuery を使用しています。特殊文字のブロック (開始と終了) を含む文字列があります。その特殊文字ブロックからテキストを取得したいです。文字列内検索には正規表現オブジェクトを使用しました。しかし、特殊文字が 2 つ以上ある場合に複数の結果を検索するように jQuery に指示するにはどうすればよいでしょうか?

私の HTML:

<div id="container">
    <div id="textcontainer">
     Cuộc chiến pháp lý giữa [|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|] và ngân hàng đầu tư quyền lực nhất Phố Wall mới chỉ bắt đầu.
    </div>
</div>

そして私の JavaScript コード:

$(document).ready(function() {
  var takedata = $("#textcontainer").text();
  var test = 'abcd adddb';
  var filterdata = takedata.match(/(\[.+\])/);

  alert(filterdata); 

  //end write js 
});

私の結果は次のとおりです: [|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|]。しかし、これは私が望んでいる結果ではありません:(。1 回目の [text] と 2 回目の [demo] を取得するにはどうすればよいでしょうか?


インターネットで情報を検索した後、作業を​​完了しました ^^。次のようなコードを作成します。

var filterdata = takedata.match(/(\[.*?\])/g);
  • 私の結果は次のとおりです: [|cơ thử|nghiệm|],[|test2|đây là test lần 2|]これは正しいです。しかし、私はこれをよく理解していません。なぜなのか答えてもらえますか?

ベストアンサー1

非貪欲正規表現修飾子は貪欲正規表現修飾子と似ていますが、?直後に が続きます。

*  - zero or more
*? - zero or more (non-greedy)
+  - one or more
+? - one or more (non-greedy)
?  - zero or one
?? - zero or one (non-greedy)

おすすめ記事