説明

説明

テキストの壁があります (コード、数字などはありません)。文章は、「段落」または「手動の改行」によって「真ん中」で分割されることがあります。

例えば:

The most obvious part was a hollow, echoing quiet, made by things that
were lacking. If there had been a wind it would have sighed through the
trees, set the inn’s sign creaking on its hooks, and brushed the silence
down the road like trailing autumn leaves. If there had been a crowd,
even a handful of men inside the inn, they would have filled the silence
with conversation and laughter, the clatter and clamor one expects from
a drinking house during the dark hours of night. If there had been music
... but no, of course there was no music. In fact there were none of
these things, and so the silence remained.

これらの行をつなぎ合わせることができる正規表現または拡張置換を作成したいと思います。

以前、私は Microsoft Word でこれを行っていました。そこでは、ドット (.) や感嘆符 (!)、疑問符 (?)、引用符 (") の代わりにアルファベット文字が前に付いている「改行」を検索し、何もないものに置き換えていました。

私はもう Microsoft Word を使っていません。Open Office でも使えますが、プロセスが非常に非常に遅いのです。

正規表現または拡張置換を使用して、Notepad++ でこれを行う方法はありますか?

答え1

正規表現を使用すると、次のことができます。

何を探すか:([^.!?"])\r\n

置換: $1(末尾にスペースを追加する必要がありますが、Markdown でレンダリングすると表示されません)

説明

([^.!?"])は、、、.または以外の文字をグループ化します。実際に任意の英数字を許可したい場合は、これを に変更できます。これは、からまでの任意の文字、大文字または小文字、任意の数字、またはアンダースコア ( ) と一致します。本当に から だけを許可したい場合は、 を使用できます。!?"([\w])AZ_AZ([A-Za-z])

角括弧は、基本的に「次の文字を許可/禁止する」ことを示すために使用されます (禁止は、^開始角括弧の直後に文字を追加することで指定されます)。角括弧を使用すると、上記の構文も許可されA-Z、予想どおり、指定された 2 つの値の間の任意の値が許可されます。

最後に、グループ化を括弧で囲むことで (これは上記のすべてのバリエーションに適用されます)、この値はプレース$1ホルダーを使用して文字列に戻すことができます。プレースホルダーについては、後ほど説明します。

\r\nNotepad++ の改行に一致します (他のエディターでは、代わりに\nまたは が改行されることがあります\r)。

全体として、正規表現自体の 2 つのセクションは、指定した文字とそれに続く改行のみに一致するようにします。

置換$1ステートメント (この場合も、必ず後ろにスペースを追加してください) は、正規表現自体で一致したもの (その行の最後の文字で、その後に改行が続くもの) を取得し、それを行に戻します (これは、このステートメントがない場合に発生する文字の削除を回避するためです)。スペースは、行をまとめたときに単語が区別され、結合されないようにするためにあります。

関連情報