HTML文書内からタグを削除するには?

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 10:38:50 No.2935

御世話になります。
HTML文書内からタグを削除するには、TTSneoでは

文章=「<head>header</head><body>content</body>」
文章=パターン置き換え(文章、「<[^>]+>」、「」)
文章を報告する

で正規表現置換が可能でしたが、プロデルではどうすればよいのでしょうか?
通常であれば、

文章は「<head>header</head><body>content</body>」
文章は、正規表現で文章から「<[^>]+>」を「」へ置換したもの
文章を報告する

で行けそうなのに、プロデルでは、「ここに演算子を書くことができません。」とエラーメッセージが出ます。そもそも
[^A]
という表現さえも許容されません。
どうすればよいのかご教授いただけませんでしょうか?
よろしくお願いいたします。

Re: HTML文書内からタグを削除するには?

投稿者:アーク 投稿日:2024/02/23(Fri) 19:30:17 No.2936

こんばんは。アークです。

プロデルでの「[」や「]」は特別な意味を持つ事を思い出してください。
また、一般的な正規表現での「[」や「]」も別の意味が有ります。

文章は「<head>header</head><body>content</body>」
正規表現によって文章から「<(.*)>(.*)<\/\1>」を子要素ごとに取り出して、テキスト一覧とする
テキスト一覧を要素にそれぞれ繰り返す
  要素(2)を報告する
繰り返し終わり

これで目的は達成できるでしょうか。
私はプロデルでの正規表現は得意では無いので、
より細かい調整が必要な場合は「sed」を使います。

参考までに。

Re^2: HTML文書内からタグを削除するには?

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 20:33:45 No.2937

アークさん、お返事ありがとうございます。

> プロデルでの「[」や「]」は特別な意味を持つ事を思い出してください。
そうなのですね。ただ、TTSneo の表現からすれば、「正規表現で」と宣言した時点で、「プロデルでの「[」や「]」は特別な意味」からは、ここでは逸脱していただきたいと思ってしまいます。
> また、一般的な正規表現での「[」や「]」も別の意味が有ります。
それを優先していただきたいのです。世の中は「正規表現>>プロデル」ですから。

> 文章は「<head>header</head><body>content</body>」
> 正規表現によって文章から「<(.*)>(.*)<\/\1>」を子要素ごとに取り出して、テキスト一覧とする
> テキスト一覧を要素にそれぞれ繰り返す
>   要素(2)を報告する
> 繰り返し終わり

> これで目的は達成できるでしょうか。
確かに、この文章「<head>header</head><body>content</body>」ならばそれで事足りるでしょうが、TTSneoよりは、かなり難しいコーディングが必要ですね。
個人的にやりたいことは、以下のような文章でHTMLタグを削除することです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
・<span class="marker_blue">プロポフォール注入を併用した場合に、成人患者を後ろ向きに同定した。</span>治療重み付けの逆確率・・・・。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。

Re^3: HTML文書内からタグを削除するには?

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/24(Sat) 00:03:50 No.2941

こんにちは

> プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。
プロデルはTTSneoよりも便利な正規表現操作ができていると認識していますので、何か誤解されていると思います。

アークさんの解説の通り、文字列定数内の[ ](全角半角区別なし)は、式展開を表す表記ですので、正規表現との相性は良くありません。(これはプロデルの文化ということでご理解ください)

希望している同様な正規表現置換というのが[ ]の表記の件を指しているのだとすれば、
正規表現を「「 」」(二重に鍵括弧)で指定することで、式展開を無効化できます。

https://produ.irelang.jp/docs/syntax/string.html

---------------
文章は「<head>header</head><body>content</body>」
文章は、正規表現で文章を「「<[^>]+>」」から「」へ置換したもの
文章を報告する
---------------
※歴史的な経緯で、を・から・への対応が文字列種類の置換と異なります。すみません。

> より細かい調整が必要な場合は「sed」を使います。
私が正規表現が好きではない事が関係していると思いますが
正規表現で求められる機能は一通り持っていると認識しています。
具体的にはsedでどのような操作をしているのでしょうか。

意外と、私としては大した問題ではないと思っていることで躓くのですね...
参考にしたいと思います。

Re^4: HTML文書内からタグを削除するには?

投稿者:KNIGHT 投稿日:2024/02/24(Sat) 07:39:14 No.2944

おはようございます。
ゆうとさま、お返事をありがとうございます。
> ---------------
> 文章は「<head>header</head><body>content</body>」
> 文章は、正規表現で文章を「「<[^>]+>」」から「」へ置換したもの
> 文章を報告する
> ---------------
ご指南の通りにやってみて上手く行きました。ありがとうございました。

> > プロデルでもTTSneoと同様な正規表現置換ができることを強く望みます。
同様にできるのですね。ヒアドキュメント形式にしなくてはいけないことに気付きませんでした。
> プロデルはTTSneoよりも便利な正規表現操作ができていると認識していますので、何か誤解されていると思います。
すみません。そうですね、誤解でした。
1つ目は、ヒアドキュメント形式で記述が必要であることに気付かなかったこと。
2つ目は、「から・を・へ」使い方に配慮が足りなかったこと。
です。

プロデルマニュアルの
文字列の文法>ヒアドキュメント> の項に
「ヒアドキュメントを使うことで例えば、正規表現やSQLを書く目的で文字列定数を使う場合に[や]の記号を配慮せずに指定できます。」と記載されているのをなんとなく読んでいましたが、肝心なところで気付きませんでした。

基本機能>正規表現> の項にも
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
プロデルでは、「[」や「]」が式展開を示す特殊な意味を持つので、正規表現パターンの記述内で「[」や「]」を使用する場合には、ヒアドキュメント形式(つまり、二重括弧「「【正規表現パターン】」」)でパターンを指定することによって、式展開を抑止するように記述する必要があります。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
といような、解説(注意書き)があると、私のような初歩的な躓きが少なくなるかなと思います。

> 意外と、私としては大した問題ではないと思っていることで躓くのですね...
> 参考にしたいと思います。
よろしくお願いいたします。

「sed」の件

投稿者:アーク 投稿日:2024/02/24(Sat) 17:10:11 No.2949

ゆうとさん、こんにちは。アークです。

〉具体的にはsedでどのような操作をしているのでしょうか。
「sed」の件は余計な事を書いてしまいました。

私が「sed」を使いだしたのはアスキーの緑本からなので昔の話です。
仕事で大量のテキスト成型をする必要があったので常用していました。
組版用の元原稿の処理で単なる敬体・常体の成型だけではなく、
組版用のタグの自動挿入や置換後の文字列の並び如何でさらに置換が必要になるなど、
通常の使用とは大分異なる使い方です。

当然、ワンライナー等では到底済む話ではなく10〜30行にもなるスクリプトファイルが必要でした。
それでも「sed」ならあっという間に処理が終了したので愛用していました。
普通はそこまで必要はないでしょうから現状で問題は無いです。

Re: 「sed」の件

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/03/07(Thu) 14:04:05 No.2972

こんにちは ご返信ありがとうございます。

機能的に足りていないということではなく
sedで動く使い慣れた既存の資産を活用しているということですね。

ありがとうございます。

▲ページの先頭へ

- WebForum -