2

これが非常に簡単であることを願っています...正規表現を使用してテキストブロックからフッターを削除しようとしています。これには、問題がある場所である最初の2つの改行が含まれます。

    Message body blah blah balh
    {Line Break}
    {Line Break}
    ----------------------------------
    Custom footer text

のバリエーションを試してみまし/\?(\r\n)(\r\n)([-{34}])/.*たが、何も機能していません。

4

1 に答える 1

3

テストを作成しましたが、これは機能します:

[\r\n]*-{34}[\w\s\n\r]*

コードは次のとおりです。

var input = @"Message body blah blah balh


----------------------------------
Custom footer text";

var pattern = @"[\r\n]*-{34}[\w\s\n\r]*";
var clean = Regex.Replace(input, pattern, "", RegexOptions.Multiline);

Console.WriteLine(clean);

出力は期待されるものです:

Message body blah blah balh

最初のアプローチにはいくつかの問題がありました。それらのいくつかは、上記のコメントでabc667によって指摘されました。

他の 2 つを次に示します。

  • を実行すると(\r\n)、正確な文字シーケンス CR、LF が期待されます。\nただし、一部のオペレーティング システムでは、改行を(LF)だけで表すことができます。両方のケースでパターンを機能させるには、次のように文字クラスを使用できます[\r\n]*。これは、「任意の順序で見つけることができるおよび/または文字のすべてのシーケンス」\n\rを意味します。

  • ドット ( .) は、\n を除く任意の 1 文字に一致します ( docsを参照)。一部の正規表現フレーバーでは、特別な条件下で改行にも一致する場合があります ("(dot)" hereを参照) が、.NET では一致しません。.*これが、点線の後のすべてに一致するはずだった を、[\w\s\r\n]*任意の単語文字、スペース文字、CR および LFに一致するものに置き換えた理由です。

于 2013-02-14T12:42:53.290 に答える