正規表現:
ここにいくつかの例のリストがあります:
* first item
* second item
No longer a list
* third item? no, it's the first item of the second list
* first item
* second item with linebreak\\ second line
* third item with code: <code>
some code
comes here
</code>
* fourth item
すべてのリストを照合するための正規表現
(?<=^|\n)(?: {2,}\*([^\n]*?<code>.*?</code>[^\n]*|[^\n]*)\n?)+
実際の動作を表示する:http://rubular.com/r/VMjwbyhJTm
コード :
すべてのリストを<ul>...</ul>
s.sub!(/(?<=^|\n)(?: {2,}\*(?:[^\n]*?<code>.*?<\/code>[^\n]*|[^\n]*)\n?)+/m, '<ul>\0</ul>')
欠落している<li>
sを追加します(次のコードのs2<ul>...</ul>
は、追加された文字列です)
s2.sub!(/ {2,}\*([^\n]*?<code>.*?<\/code>[^\n]*|[^\n]*)\n?/m, '<li>\1</li>')
注:
ネストされたリストは、この正規表現では処理できません。これが要件である場合、パーサーはより適応されます!