少なくとも 1 つの単語がすべて大文字である HTML 段落に一致します

少なくとも 1 つの単語がすべて大文字である HTML 段落に一致します

正規表現などを使用して、少なくとも 1 つの大文字の単語を含む段落を一致させる必要があります。

次に、それをヘッダーに変換し、タイトルのコンテンツをすべて大文字にします。以下の例では、ここに変更する必要がありますここアクセント付き文字も含まれます。

これどうやってするの?

<P STYLE="margin-bottom: 0cm"><BR>
    </P>
</DIV>
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm; line-height: 0.42cm">
<FONT SIZE=4><B>TITLE Here</B></FONT></P>

Linuxを使用しています。

答え1

コンソールコマンドを使用してこれを行うことはほぼ確実ですが、これは定期的な作業ではなく、1回限りの修復作業のように思われるため、私のお気に入りのグラフィカル正規表現ツールである、非常に便利なオープンソースのプログラマー向けテキストエディタであるjEditを使用します。(翻訳元詳細については。)

jEdit をインストールしたら、Ctrl + F を押すか、「検索」メニューに移動して「検索」項目を選択して、「検索と置換」ダイアログを開くことができます。

「検索と置換」ダイアログでは、使用したい「検索対象」オプションを選択する必要があります。「現在のバッファ」では現在のファイルのみが変更され、「すべてのバッファ」では jEdit で現在開いているすべてのファイルが変更され、「ディレクトリ」オプションでは、指定したフィルタ (またはなど) に一致するディレクトリ (ダイアログの下部で指定) 内のすべてのファイルを変更できます*.html*.php「ディレクトリ」オプションは非常に強力で、必要なオプションである可能性がありますが、このオプションを使用する際には十分注意し、検索/置換によって予期しない変更が予期しない方法で一致して発生しないように十分に注意してください。

次に、ダイアログの中央にある「正規表現」ボックスにチェックを入れます。

次に、「検索」テキストボックスに、変更する必要があるテキストをターゲットにするために使用する正規表現を入力します。要件を理解している限り、次の正規表現パターンで十分でしょう。

(?<=>)([^<]*\p{Lu}{2,}[^<]*)(?=<)(?!</script)

このパターンは、「 で始まり、 以外の任意>の数の文字を含み、<その後に少なくとも 2 つの連続する大文字が含まれ、その後に 以外の任意の数の文字が含まれ<、最後に が続くが が続かないテキストを選択する」<ことを意味します</script

次に、「BeanShell スニペットの戻り値」オプションを選択し、「置換後」テキストボックスに次のように入力する必要があります。

_1.toUpperCase()

この BeanShell スニペットは、「正規表現に一致する最初のキャプチャ グループでキャプチャされたテキストを大文字に変換した」というだけです。

これをテストしたところ、HTML ファイルで 2 つ以上の連続した大文字を含む生のテキストの連続シーケンスを問題なく検出できました。UK や USB などの無害なものを含む段落もこの正規表現に一致することに注意してください。そのため、シーケンスが一致するには少なくとも 4 つの連続した大文字が必要であるように量指定子{2,}を変更する必要があるかもしれません。{4,}

また、貴重なファイルまたはファイル セットにこれを適用する前に、必ず慎重にテストしてください (また、変更を保存するまで問題に気付かなかった場合に復元できるように、最初にすべての元のファイルのバックアップを取っておくようにしてください)。

関連情報