⍝ Extract html segments:

    nl←⊃⌽⎕tc

    htm←,'<html>                                                    ',nl
    htm,←'  <body>                                                  ',nl
    htm,←'    <table>                                               ',nl
    htm,←'      <tr><td>%</td><td>Eye Poke</td><td>Kumquat</td></tr>',nl
    htm,←'      <tr><td>Guys</td><td>60</td><td>40</td></tr>        ',nl
    htm,←'      <tr><td>Dolls</td><td>20</td><td>80</td></tr>       ',nl
    htm,←'    </table>                                              ',nl
    htm,←' </body>                                                  ',nl
    htm,←'</html>                                                   ',nl

    'table'htx htm                  ⍝ extract table.
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ <tr><td>%</td><td>Eye Poke</td><td>Kumquat</td></tr> <tr><td>Guys</td><td>60</td><td>40</td></tr> <tr><td>Dolls</td><td>20</td><td>80</td></tr> │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    '<table'htx htm                 ⍝ extract table including tags.
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│<table> <tr><td>%</td><td>Eye Poke</td><td>Kumquat</td></tr> <tr><td>Guys</td><td>60</td><td>40</td></tr> <tr><td>Dolls</td><td>20</td><td>80</td></tr> </table>│
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    '<tr'htx htm                    ⍝ extract table rows.
┌────────────────────────────────────────────────────┬────────────────────────────────────────────┬─────────────────────────────────────────────┐
│<tr><td>%</td><td>Eye Poke</td><td>Kumquat</td></tr>│<tr><td>Guys</td><td>60</td><td>40</td></tr>│<tr><td>Dolls</td><td>20</td><td>80</td></tr>│
└────────────────────────────────────────────────────┴────────────────────────────────────────────┴─────────────────────────────────────────────┘

    '<td'htx htm                    ⍝ extract table data.
┌──────────┬─────────────────┬────────────────┬─────────────┬───────────┬───────────┬──────────────┬───────────┬───────────┐
│<td>%</td>│<td>Eye Poke</td>│<td>Kumquat</td>│<td>Guys</td>│<td>60</td>│<td>40</td>│<td>Dolls</td>│<td>20</td>│<td>80</td>│
└──────────┴─────────────────┴────────────────┴─────────────┴───────────┴───────────┴──────────────┴───────────┴───────────┘

    '<td'∘htx¨'<tr'htx htm          ⍝ extract table data per row.
┌───────────────────────────────────────────────┬───────────────────────────────────────┬────────────────────────────────────────┐
│┌──────────┬─────────────────┬────────────────┐│┌─────────────┬───────────┬───────────┐│┌──────────────┬───────────┬───────────┐│
││<td>%</td>│<td>Eye Poke</td>│<td>Kumquat</td>│││<td>Guys</td>│<td>60</td>│<td>40</td>│││<td>Dolls</td>│<td>20</td>│<td>80</td>││
│└──────────┴─────────────────┴────────────────┘│└─────────────┴───────────┴───────────┘│└──────────────┴───────────┴───────────┘│
└───────────────────────────────────────────────┴───────────────────────────────────────┴────────────────────────────────────────┘

    'td'htx htm
┌─┬────────┬───────┬────┬──┬──┬─────┬──┬──┐
│%│Eye Poke│Kumquat│Guys│60│40│Dolls│20│80│
└─┴────────┴───────┴────┴──┴──┴─────┴──┴──┘

    ↑'td'∘htx¨'tr'htx htm
┌─────┬────────┬───────┐
│%    │Eye Poke│Kumquat│
├─────┼────────┼───────┤
│Guys │60      │40     │
├─────┼────────┼───────┤
│Dolls│20      │80     │
└─────┴────────┴───────┘

    'td'htx ltov htm                            ⍝ test vector of vectors.
┌─┬────────┬───────┬────┬──┬──┬─────┬──┬──┐
│%│Eye Poke│Kumquat│Guys│60│40│Dolls│20│80│
└─┴────────┴───────┴────┴──┴──┴─────┴──┴──┘

    'td'htx ⎕fmt htm                            ⍝ test character matrix.
┌─┬────────┬───────┬────┬──┬──┬─────┬──┬──┐
│%│Eye Poke│Kumquat│Guys│60│40│Dolls│20│80│
└─┴────────┴───────┴────┴──┴──┴─────┴──┴──┘

    '<jj'htx'<jj>aaa</jj><jj>bbb</jj>'          ⍝ adjacent <end><begin> tags.
┌────────────┬────────────┐
│<jj>aaa</jj>│<jj>bbb</jj>│
└────────────┴────────────┘
    1 disp '<JJ'htx'<jj>aaa</jj><jj>bbb</jj>'   ⍝ no matches.
┌⊖────┐
│     │
└────→┘

Back to: code

Back to: Workspaces