正規表現で文字列抽出しようとした場合、該当箇所があった最後の文字から次の検索がされます。
例として以下の文字列から
html
1<p>Text One</p> 2<table><tr><td>Cell</td><td>Cell</td></tr></table> 3<table><tr><td>Cell</td><td>Cell</td></tr></table> 4<p>Text Two</p> 5<table><tr><td>Cell</td><td>Cell</td></tr></table> 6<table><tr><td>Cell</td><td>Cell</td></tr></table> 7<p>Text Three</p> 8<table><tr><td>Cell</td><td>Cell</td></tr></table> 9<table><tr><td>Cell</td><td>Cell</td></tr></table> 10<p>Text Four</p> 11<table><tr><td>Cell</td><td>Cell</td></tr></table> 12<table><tr><td>Cell</td><td>Cell</td></tr></table> 13<p>Text Five</p> 14<table><tr><td>Cell</td><td>Cell</td></tr></table> 15<table><tr><td>Cell</td><td>Cell</td></tr></table>
以下のブロックを抜き出そうとするとき
html
1<p>Text Number</p> 2<table><tr><td>Cell</td><td>Cell</td></tr></table> 3<table><tr><td>Cell</td><td>Cell</td></tr></table>
以下のregexを指定すると
html
1<p>[\s\S]*?</table>[\s\S]*?<p>
該当箇所が2か所になります
html
1<p>Text One</p> 2<table><tr><td>Cell</td><td>Cell</td></tr></table> 3<table><tr><td>Cell</td><td>Cell</td></tr></table> 4<p>
html
1<p>Text Three</p> 2<table><tr><td>Cell</td><td>Cell</td></tr></table> 3<table><tr><td>Cell</td><td>Cell</td></tr></table> 4<p>
(判りにくくてすみません...)
この該当箇所の最後の部分を重複許容させて正規表現で検索したいのですが、そういったやり方は可能でしょうか。(上の例の5ブロックをすべて抽出できる表現の仕方でも構いません)
何卒よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/10 03:20
2018/05/10 03:37 編集