この質問はどこか(おそらくここ)で行われたと思いますが、情報が見つからなかったため、正確に説明する方法がわからないことが原因である可能性があります。
基本的に、私は高度な検索と置換を行うことを探しています。交換それに関しては私は理解できると確信していますが、今のところ私は発見を機能させることができません。
アプリケーションでは、ロードされているhtmファイルがたくさんあります。ユーザーはファイルを選択し、それを使用してアクションを実行します。このアクションが完了したら、システムでファイルをもう一度スキャンして、問題がないことを確認します。たとえば、この文字列はhtmファイルに存在する可能性があります。
<?strange_tag_start
name="var_value" ?>Name<?strange_tag_end ?>
そして、はい、それはこのような線を越えて壊れる可能性があります。これが起こらない限り、上記は問題ではありません:
<?strange_tag_start
name="var_value" ?><?strange_tag_start
name="var_value" ?>Name<?strange_tag_end ?><?strange_tag_end ?>
改行は異なる場合があります。私がやりたいのは、を含む文字列とを含む文字列をドキュメントで検索すること<?strange_tag
です<?strange_tag_end ?>
。<?strange_tag_start
それらが見つかったら、文字列内に別のものがあるかどうかを確認したいと思います<?strange_tag_end ?>
。
私は最初にファイルを読み取り、特定の値のすべてのインデックスを取得してから、それらを比較しようとしました。ただし、ファイルには次のものが含まれている可能性があり、これらは完全に問題ありませんが、システムがそれらを検出し、フラグを付けてくれます。
<?strange_tag_start
name="var_value" ?>Name<?strange_tag_end ?> There is other text here
and some more text on another line. Then this <?strange_tag_start name="var_value"
?>Name<?strange_tag_end ?> is present.
つまり、文字列の先頭を指定し、文字列の末尾を指定して、文字列が含まれているかどうかを確認するシステム(一部のアプリケーションに存在するものなど)です。
これが意味をなさない場合、またはさらに明確にする必要がある場合は、それを行うことができます。
アップデート
これで明確にしましょう。次の複数行の文字列があります。
I want to preserve<?start_foo
bar="value" ?> the content
<?start_baz qux="value" ?>Name
<?end-baz_qux ?>that is between weird tags.
見つけ<?start_foo bar="value"
たい私も見つけたい<?end-baz_qux ?>
(注:これらの2つが隣り合っている可能性があります)それらを見つけた後、その文字列内に別のものがあるかどうかを確認したい<?start_foo bar=
(注:そのタグの「値」は同様に異なります。)次に、そこにあるとは思われない中間のコンテンツを削除したいので、最終的には次のようになります。
I want to preserve<?start_foo
bar="value" ?> the content
<?end-baz_qux ?>that is between weird tags.
うまくいけばそれをより明確にするための別の例があります:
Back <?rh-udv_start name="ctrl_btn" ?><?rh-udv_start name="ctrl_btn"
?>button<?rh-udv_end ?><?rh-udv_end ?> to
検索を行った後、私はこれで終わるはずです:
Back <?rh-udv_start name="ctrl_btn" ?>button<?rh-udv_end ?> to
基本的に、私は言う方法を探しています:
- VALUE_Xを使用して、「begins」(「begin」が文字列の途中にある可能性があるため誤解を招く)の文字列を検索します。
- 見つかった場合は、その後にVALUE_Yを見つけます(VALUE_Xがある場合は常にこれを見つける必要があります)。
- VALUE_Yの後で、別のVALUE_Yがあるかどうかを確認します。
- VALUE_XからVALUE_Yの文字列の内部をチェックして、別のVALUE_Xが含まれているかどうかを確認します。
- 別のVALUE_Xがある場合は、それを削除します。VALUE_Yの直後にVALUE_Yがある場合は、2番目のVALUE_Yを削除します。