Markdown ソース テキストが与えられた場合:
- sometext
- sometext
followingText
- sometext
- sometext
- sometext
リスト範囲内の二重改行\n\n
を置き換えたい;\nWhiteSpace\n
だからJS の $1 テクニックで、私はやった
(- [\s\S]+?)(?:\n\n(?=\n))|(- [\s\S]+?)(?:\n\n(?=- ))
http://regex101.com/r/hO7vT9
青い選択は、最初の二重改行が選択されていないことを除いて、ほとんど機能しているターゲットです。
これは、(- [\s\S]+?)(?:\n\n(?=\n))
最初に一致し、(- [\s\S]+?)(?:\n\n(?=- ))
が評価されないためです。
はい、順序を元に戻すことができ(- [\s\S]+?)(?:\n\n(?=- ))|(- [\s\S]+?)(?:\n\n(?=\n))
ます。
これで、最初の選択は機能しますが、2 番目の選択は失敗します (最初のバージョンと比較して、2 番目の選択の意図した結果)。
これに対する回避策はありますか?
もちろん、正規表現を分離して 2 回置換することを提案することもできます。うまくやったのですが、結果が面倒なので、これを単一の正規表現で実現したいと思います。言語はJSです。