Yahoo Pipes Regex 考察
Regexモジュールについてわかった事。
「\s」削除で、他の要素も消えてしまう現象について
例えば、以下のようなtableがあったとします。
<table class="summer"> <tr><th><p>名前</p></th><td><p>山田</p></td></tr> <table>
ここで、まずスペースを一掃するために、Regexモジュールで「\s→null」指定すると、以下のような結果となってしまいました。
<p>名前</p><p>山田</p>
原因
なぜか。スペースを全て削除してしまったため、
<table class="summer">→<tableclass"summer">
となってしまい、この場合Yahoo Pipesではtableタグを無効と見なしてしまうらしいのです。
<table>が無効ならその中の<tr>や<th>等も全てあり得ない存在なので、table関連タグは全て非表示となります。
そして問題なのは、こうしてプレビュー上で見えなくなったタグは、Regexによる置き換えが非常に困難になる点です。
「.*」で指定すればOKですが、「[^0-9]*」等のNOT規則が効かなくなります。
対策
要はタグ内のスペースを残せば良いので、Regexで以下のように指定して以下のようにします。
pattern | output |
---|---|
\s*< | $1< |
>\s* | >$1 |
考え方は、「タグの外に連続するスペースのみ削除」です。
ただしこれだと以下のような、タグ外の文章中に存在するスペースは削除されませんので、別の対策が必要ですね。