0

多くのパラグラフを含む非常に大きな HTML ドキュメントがあります。見出しには、段落内で大文字のテキストが使用されます。

大文字のテキストを含むすべての段落を見つけて、これらの段落にスタイルを適用する方法は?

また、ほとんどの段落のテキスト間に十分なスペースがあります。既存の見出しのサンプル:

<p>                                                   </p>
<p>                      USU EA EUISMOD HONESTATIS DETERRUISSET.</p>
<p>Qualisque mnesarchum no nam, usu cu fastidii delicata. Eu mei nonumy libris, quas movet vivendo vim at. Prima epicuri conceptam pro ad, in suas nonumes similique duo. Qui mundi essent complectitur eu. Ei laudem veritus democritum vis, te ferri appareat eos. Ceteros pertinacia ea eum, quo integre theophrastus ex, eum et sint omnes detracto. Ea vim brute labore. Vim te esse libris erroribus, ex minimum tacimates dissentiet duo. Ignota iisque in mei, pri sanctus albucius omnesque id. Laoreet docendi theophrastus ei pri, duo wisi tollit decore ea, tempor doctus vivendo sed ad. </p>
<p>Usu ea euismod honestatis deterruisset. Ne quo malis meliore, duo viris liberavisse no, mea an vide mutat quodsi. Vis an vidit debitis, et noster aliquam pri, case iudicabit te sea. Cum sadipscing consectetuer cu, an nominavi consulatu adversarium sea, nam ad dico evertitur voluptaria. Id justo viderer bonorum per, in ius impedit tincidunt, nec et quis scaevola. Cu congue iriure scaevola usu. Ei elit reformidans suscipiantur eos, cum ut doming iracundia.  </p>
<p>                                                                             </p>
<p>                       CU CONGUE IRIURE SCAEVOLA   --
   UT DOMING IRACUNDIA. </p>
<p>                                  DICO TEMPOR HABEMUS.</p>
<p>Homero everti ei nam. An liber euripidis vis, pericula persecuti deseruisse ad mea. Dicant offendit sea et, per esse timeam deserunt ut. In pri enim sadipscing, ei movet soleat suavitate vim. Mea et omnesque phaedrum, paulo luptatum concludaturque vim ea. -- LIBER. </p>

段落タグ内の大文字のテキスト (見出し) にスタイルを適用して、太字 (見出し) にします。

上記のブロックは、正規表現の置換または UltraEdit マクロを実行すると、次のようになります。

<p>                                                   </p>
<p class="bold">                      USU EA EUISMOD HONESTATIS DETERRUISSET.</p>
<p>Qualisque mnesarchum no nam, usu cu fastidii delicata. Eu mei nonumy libris, quas movet vivendo vim at. Prima epicuri conceptam pro ad, in suas nonumes similique duo. Qui mundi essent complectitur eu. Ei laudem veritus democritum vis, te ferri appareat eos. Ceteros pertinacia ea eum, quo integre theophrastus ex, eum et sint omnes detracto. Ea vim brute labore. Vim te esse libris erroribus, ex minimum tacimates dissentiet duo. Ignota iisque in mei, pri sanctus albucius omnesque id. Laoreet docendi theophrastus ei pri, duo wisi tollit decore ea, tempor doctus vivendo sed ad. </p>
<p>Usu ea euismod honestatis deterruisset. Ne quo malis meliore, duo viris liberavisse no, mea an vide mutat quodsi. Vis an vidit debitis, et noster aliquam pri, case iudicabit te sea. Cum sadipscing consectetuer cu, an nominavi consulatu adversarium sea, nam ad dico evertitur voluptaria. Id justo viderer bonorum per, in ius impedit tincidunt, nec et quis scaevola. Cu congue iriure scaevola usu. Ei elit reformidans suscipiantur eos, cum ut doming iracundia.  </p>
<p>                                                                             </p>
<p class="bold">                       CU CONGUE IRIURE SCAEVOLA   --
   UT DOMING IRACUNDIA. </p>
<p class="bold">                                  DICO TEMPOR HABEMUS.</p>
<p>Homero everti ei nam. An liber euripidis vis, pericula persecuti deseruisse ad mea. Dicant offendit sea et, per esse timeam deserunt ut. In pri enim sadipscing, ei movet soleat suavitate vim. Mea et omnesque phaedrum, paulo luptatum concludaturque vim ea. -- LIBER. </p>

一部の段落には大文字と小文字のテキストが混在しているため、大文字を含まないすべての大文字のテキストを含む段落のみを検索するには、regex を制限する必要があります。段落内に改行を入れることもできます。

UltraEdit for Linux でマクロまたはコードを使用してこれを行うにはどうすればよいですか? (または正規表現としてのWindowsバージョンはとにかく同じです。)

電子ブックリーダー(Kindleなど)がヘッダーを予測できない方法で表示する可能性があるため、(ヘッダーH1、H2などを作成する代わりに)段落にクラスを適用したい。ドキュメントのエンコーディングは utf-8、キリル文字セットです。

4

4 に答える 4

1

UltraEdit での正規表現のサポート

編集前の元の質問で述べた UltraEdit v11.20 は非常に古く、Perl 構文での正規表現の検索/置換をサポートしていません。UltraEdit および Unix 構文では、Unix は Perl に似ていますが、その機能は非常に限られています。

Perl 正規表現の検索/置換のサポートは、2006 年 3 月 15 日にリリースされた UltraEdit for Windows v12.00 で導入されました。UltraEdit の Perl 正規表現サポートに関して、多数のマイナー アップデートといくつかのメジャー アップデートが行われました。マイナーアップデートはバグ修正でした。また、UE v19.00 や UE v21.20 などのメジャー アップデートでは、UltraEdit for Windows に埋め込まれた新しいバージョンの Boost 正規表現ライブラリが導入され、正規表現エンジン自体が強化されています。

Perl 構文のどの正規表現ライブラリが、Mac および Linux の UltraEdit で使用されているかわかりません。さまざまなプラットフォームおよびさまざまなバージョンのさまざまな正規表現ライブラリには多くの共通点がありますが、もちろん違いもあります。そのため、プラットフォームと UltraEdit のバージョン、それぞれ使用される正規表現ライブラリのバージョンを、複雑な Perl 正規表現の検索/置換で考慮する必要があります。過去 20 年間、すべてのバージョンのすべてのプラットフォームのすべてのアプリケーションで使用された Perl 正規表現ライブラリは 1 つだけではありません。

文字セット (コード ページ) に応じたソリューション

UltraEdit for Windows v11.20 またはそれ以降のバージョンの UltraEdit では、このタスクにUltraEdit 正規表現を使用し、次の検索と置換文字列を使用して、置換ウィンドウでさらにチェックされた大文字と小文字を区別します。

検索対象:<p^(>[~A-Za-z<>]++[A-Z][^t^r^n -`{-~]++</p>^)
置換対象:<p class="bold"^1

これは、UltraEdit 構文のタグ付き式です。

いずれの場合も ASCII 文字ではない文字または山括弧を 0 個以上検索し<p>、大文字の ASCII 文字が少なくとも 1 文字あり、小文字の ASCII 文字を除く 0 個以上の ASCII 文字を検出する</p>必要があります。3 番目の文字クラスで<は、段落テキストが既にエンコードされて&lt;おり、HTML/XHTML および XML 標準で必要とされるように>エンコードされていることが期待されます。%gt;

3 番目の文字クラスには、 ASCII テーブル[^t^r^n -`{-~]内の文字の知識を必要とする 2 つの特殊な文字範囲定義が含まれています。1 つ目は、多くのよく使用される句読点、0 ~ 9 の数字、および大文字の ASCII 文字を含むスペースからグレイブ アクセントまでであり、2 つ目は左中括弧からチルダ文字までで、ASCII の他の非単語文字を含みます。文字範囲。

同じ正規表現がUnix/Perl構文で置き換えられます。

検索対象:<p(>[^A-Za-z<>]*[A-Z][\t\r\n -`{-~]*</p>)
置換対象:<p class="bold"\1

ドイツ語の文字のようなその他の大文字ÄÖÜも、3 つの角括弧内の文字クラスに追加できます。この場合、 のような小文字の言語固有の文字äöüßを最初の文字クラス定義にも追加して、確実に一致するものとして除外する必要があります。

また、[ Match Case ] オプションがオンになっていると、正の文字クラスの代わりに負の文字クラスを使用できます。

UltraEdit 構文の例:

検索対象:<p^(>[~A-Za-z<>ÄÖÜäöüß]+[A-ZÄÖÜ][~a-z<>äöüß]++</p>^)
置換対象:<p class="bold"^1

これには、負の文字クラスで指定された小文字と山かっこを除くすべての文字が、使用されている文字セット/コード ページの上半分の文字を多く含む見出しの有効な文字として解釈されるという利点があります。

このタスクは、v11.20 よりも新しいバージョンの UltraEdit を使用すると簡単になります。これは、Perl 正規表現エンジンが、Unicode 定義に従って小文字用の文字クラスと大文字用の文字クラスを事前定義しているためです。

Perl を使用した Unicode ソリューション

Unicode標準に従って文字定義を使用するため、ローカル文字セット/コード ページに依存しないソリューションには、Perl 正規表現の置換が必要です。

ただし、すべてのバージョンのすべての Perl 正規表現ライブラリが、以下に記述されている式をサポートしているわけではありません。

投稿された Perl 正規表現は、UltraEdit for Windows v22.20.0.49 (Windows XP 用の UE の最後の公開バージョン) および v23.20.0.28 (Windows Vista 以降の Windows 用の UE の現在の最新バージョン) でテストされました。

UltraEdit for Windows で使用される Boost Perl 正規表現ライブラリは、複数の文字クラスをサポートしてます。ここで最も興味深いのは[:upper:]、大文字の単語文字と[:lower:]小文字の文字です。

Perl 正規表現の例:

検索対象:<p(>\W*?[[:upper:]][^[:lower:]]+?</p>)
置換対象:<p class="bold"\1

検索対象:<p(>\W*?[[:upper:]][[:upper:]\W]*?</p>)
置換対象:<p class="bold"\1

\W非単語文字の一般的な「単一文字」文字クラスです。

すべての小文字の「1 文字」文字クラスは\l. And\uは、すべての大文字の「1 文字」文字クラスです。これらの短い文字クラスも検索文字列に使用できます。

検索対象:<p(>\W*?\u[^\l]+?</p>)
置換対象:<p class="bold"\1

検索対象:<p(>\W*?\u[\u\W]*?</p>)
置換対象:<p class="bold"\1

ここに掲載されているすべての表現では、段落に少なくとも 1 つの大文字が含まれていることを確認してください。

于 2016-07-23T18:47:45.030 に答える