1. ホーム
  2. ジャバスクリプト

[解決済み】正規表現を非貪欲にする方法とは?

2022-04-19 19:13:10

質問

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|]. というのは正しいのですが、これがよくわからないのです。なぜなのか、教えてください。

どのように解決するのですか?

非貪欲な正規表現修飾子は、貪欲な正規表現修飾子と似ていますが ? の直後となる。

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