web-dev-qa-db-ja.com

MicrosoftWordでの検索での文字範囲と段落区切りの一致

純粋に見た目の理由で改行(段落区切り)が追加されたWord文書がいくつかあります(おそらく人間によるものですが、OCRシステムなどによるものかもしれません)。これらの余分な改行をドキュメントから削除したいと思います。基本的に、「余分な」改行は、両側が小文字で囲まれている改行です(オプションの空白を使用)。残念ながら、Word(^ p)で段落の区切りを検索したい場合は、文字クラスを使用して小文字([a-z])のみを検索することはできません。その逆も同様です。

基本的に、ドキュメントで複数行の正規表現を使用して、次のようなものを見つけたいと思います。

/[a-z]\s*\n\s*[a-z]/

改行をスペースに置き換えます。段落記号(Wordでは^ p)と文字クラス(または一般的には小文字)の両方を検索する方法はありますか?

例:

題名¶
これはいくつかのテキストです。

一致しませんが

このテキストは1行にあり、¶
次の行に進みます。

一致し、「¶」はスペースに置き換えられます。

2
Drewmate

Microsoft Wordの[検索して置換]ダイアログボックスで[More >>]をクリックすると、[検索オプション]パネルに[使用]が表示されることをご存知かどうかはわかりません。ワイルドカード」オプション。正規表現表記ではなく、難解なワイルドカード言語をサポートしていることに注意してください。このオプションを開始するには、[a-z]^13[a-z]を使用します。何らかの理由で、ワイルドカード検索で^pを使用することはできませんが、^13はワイルドカード対応の^pに相当します。

空白は少し注意が必要です。私が思いつくことができる最善のことは、を使用して検索を4回実行する必要があることです。

  • [a-z]^13[a-z]
  • [a-z][^t ]{1,99}^13[a-z]
  • [a-z]^13[^t ]{1,99}[a-z]、および
  • [a-z][^t ]{1,99}^13[^t ]{1,99}[a-z]

奇妙なことに、^tはワイルドカードモードで機能するためです。 \sおよび*は、正規表現での意味を意味するものではありません。 {n,m}does動作しますが、nは正である必要があります。また、前の最後の文字と次の最初の文字が一致に含まれているため、一致をスペースに置き換えることはできず、混乱することに注意してください。

追加のクレジットの場合:改行の前の最後の印刷文字として-(ハイフン)を探すことをお勧めします。ただし、次の2つの(異なる)ケースに必ず対処してください。

…下に囲まれている-¶
両側の大文字(オプションの空白付き)。 Unfor-¶
しかし、幸いなことに…

5
Scott

^13は、ワイルドカード対応の^pに相当します。

これはほぼ真実ですが、^13^pの間にはわずかな違いがあることに注意してください。段落区切りを^13に置き換えると、Wordの通常の段落区切りで得られる2倍のスペースが失われるようです。

first paragraph¶

second paragraph¶

third paragraph¶

になります

first paragraph¶
second paragraph¶
third paragraph¶

これを解決するには、検索と置換ダイアログの置換部分で必ず^p段落記号を使用してください。ワイルドカードを使用した^pの制限は、ダイアログの検索部分にのみ適用されます。

0
DBolton