0

私は.netregex互換を使用していますが、実際にはeditpadproを使用しています。.pdfから単純なWebページにリフォームしていますが、pdfファイルの一部のテキストが正しく表示されません。たとえば、黒のフォントの文字列の後には、黒のテキストの説明が続く必要があります。しかし、多くの行が一緒になっていないので、黒い単語の文字列だけで次のように言います。

単語の説明

そして私が達成したいのは

単語の単語の説明

htmlファイルなのでタグを扱っています

</span> or <br/>

すでに問題のない単語に干渉することなく、単独の単語だけを選択する必要があります。

だから私がターゲットにしたいのはこのような行です

<p><span class="font7" style="font-weight:bold;">text text text text </span></p>\r\n<p>

ここで、「テキスト」が4回繰り返されるのは、ターゲットとする行を含む黒いフォントのテキストです。しかし、私が避けたいこのような行があります

<p><span class="font7" style="font-weight:bold;">text text text text </span><span class="font7"> text text text <br/> text text text </span></p>\r\n<p>

私が試しているのは、先読みを使用しようとしたため(必須ではありませんが)、jgsoftまたは.net互換の式を使用して正規表現を使用することですが、これは機能しないようです。なぜだろうと思います。

<p><span class="font7" style="font-weight:bold;">.+?(?:(?!.+?</span>.+?$)){2}</p>\r\n<p>

これは私がやった別の試みですが、うまくいきませんでした。

<p><span class="font7" style="font-weight:bold;">(?!.+(</span>).+\1)</p>\r\n<p>

文字列の先頭にある先読みを使用して一致させようとしましたが、最後に何度も試行したので、あなたのような人に聞いてみると、おそらくこの問題を解決する方法がわかります。

したがって、最後に必要なのは、これらの行からこの部分を削除してターゲットにすることです。

</p>\r\n<p>

なぜなら、それらの二重段落は必要ではなく、それらの特定の行だけにあるからです。そうすることで、このようになります

単語の単語の説明

.netフレーバーまたはperlフレーバーを提供できる場合は、テキストエディターで実行するのが適切ですが、他に提案がある場合も同様です。

cuernavaca mexicoからのご挨拶、私の英語をお詫び申し上げます。もしあれば助けてくれてありがとう。

4

1 に答える 1

1

これを小さな部分に分割すると、次のように機能する可能性があります。

var valid = "<p><span class=\"font7\" style=\"font-weight:bold;\">text text text text </span></p>\r\n<p>";
var invalid = "<p><span class=\"font7\" style=\"font-weight:bold;\">text text text text </span><span class=\"font7\"> text text text <br/> text text text </span></p>\r\n<p>";
var input = valid + invalid;

foreach (Match match in Regex.Matches (input, "<p>(?!<p)(.*?)</p>")) {
    var line = match.Groups [1].Value;
    Console.WriteLine ("MATCH: {0}", line);

    var spans = Regex.Matches (line, "<span.*?>(.*?)</span>");
    Console.WriteLine ("SPANS: {0}", spans.Count);
}

したがって、最初にいずれかを一致させることによって物事を分割し<p>.....</p>、次に中身を確認します。

于 2012-12-15T07:49:26.597 に答える