5

文字列内の少なくとも 2 つの改行 ( \n\n ) の最後の出現を置き換える必要があるため、 \n\nまたは\n\n\nまたは\n\n\n\nなど(少なくとも 2 \n ) " @@ "。preg_replaceであるべきだと思います。stackoverflowの回答にある多くのオプションを試しましたが、このすべてのオプションには、キャッチされなかったケースがいくつかあります。regex101 サイトで正規表現を用意しようとしたのですが、私はこれが苦手なので、サイトで動作しているように見える解決策を見つけました ( ) が、自分のコードで試してみると動作しません。/((\\n){2,})+(?!.*((\\n){2,})+)/i

もう1匹は でしたが([\\n\\n])+(.[^\\n\\n])*$、これも前回のnnで釣れました

テスト文字列は次のとおりです。

ストレージ\nTransformer Book T101HA の強力なクアッドコア Intel X5 プロセッサにより、シームレスなマルチタスクにより、より少ない時間でより多くのことを成し遂げることができるため、毎日のすべてのタスクを問題なくこなすことができます。ストレージも便利で柔軟です。内部には 128GB の超高速フラッシュ ストレージがあり、マイクロ SD カード スロットを介して簡単に拡張できます。また、ASUS WebStorage の無制限のクラウド ストレージを 1 年間無料で利用できます!\n\nカラー|ホワイト/ゴールド\n\n\n\n\n\nCPU|Innn dsafdsfdfa \n\n\n\n\n\n\ n\ ndfnn

したがって、結果は次のようになります。

ストレージ\nTransformer Book T101HA の強力なクアッドコア Intel X5 プロセッサにより、シームレスなマルチタスクにより、より少ない時間でより多くのことを成し遂げることができるため、毎日のすべてのタスクを問題なくこなすことができます。ストレージも便利で柔軟です。内部には 128GB の超高速フラッシュ ストレージがあり、マイクロ SD カード スロットを介して簡単に拡張できます。また、ASUS WebStorage の無制限のクラウド ストレージを 1 年間無料で利用できます!\n\nカラー|ホワイト/ゴールド\n\n\n\n\n\nCPU|Innn dsafdsfdfa @@ dfnn

誰でもこれを手伝うことができますか?さらに、答えられた正規表現のロジックを説明できますか?

どうもありがとう。

4

1 に答える 1

5

あなたは使用することができます

/\n{2,}(?!.*\n{2})/s

正規表現のデモを見る

詳細

  • \n{2,}- 2 つ以上の改行
  • (?!.*\n{2})- 2 つの改行が続く 0+ 文字が続きません。

改行を意味する場合は、に置き換え\nます\R

于 2016-12-25T09:07:36.373 に答える