「開始文字列」と「終了文字列」で括られた対応関係を最長一致でマッチします。 テキストエディタでよくある「対応する括弧の強調表示」と同じアルゴリズムだと思って頂ければ、イメージしやすいかもしれません。
- 第一引数 … 検索対象文字列。
- 第二引数 … 開始文字列(正規表現パターン)。
- 第三引数 … 終了文字列(正規表現パターン)。
第二引数、第三引数は1文字の場合に限り、正規表現メタキャラクタをエスケープしなくても構いません(1文字で成立するメタキャラクタが存在しない為)。
対応する括弧 「」
を抽出します。
/**
* 「xxx」
*/
var string = '「「「a」, 「「b」」, 「「c」「d」」, 「「「e」「f」」」, 「「「g」」「「h」」」';
findCorrespondingFromString(string, '「', '」'); // ["「a」","「「b」」","「「c」「d」」","「「「e」「f」」」","「「「g」」「「h」」」"]
対応する括弧 <<>>
を抽出します。
/**
* <<xxx>>
*/
var string = '<<a>>,<<<<b>>>>,<<<<c>><<d>>>>';
findCorrespondingFromString(string, '<<', '>>'); // ["<<a>>","<<<<b>>>>","<<<<c>><<d>>>>"]
対応するHTMLタグ <div></div>
を抽出します。
/**
* <div>xxx</div>
*/
var string = `<div id="parent">
<p>text</p>
<div class="child">
<p>text</p>
<p>text</p>
<div class="grandson">
<p>text</p>
</div>
<div class="grandson">grandson2</div>
</div>
<div class="child">child2</div>
</div>`;
findCorrespondingFromString(string, '<div(?:\\s[^>]*)?>', '</div>'); // [<div id="parent">...</div>]
サンプルデモ。