2012-05-03 7 views
1

私はこの特定の行のテキストとクライアントを提出し、行は自動的に65文字で区切ります。私は正規表現を変更してもう1行追加するか、 。、!、?のような最初の句読点までの最大行文字改行と復帰キャリッジを含む一致する文字

一致しているラインの例:

Snippet: It's time again for the Annual State Marching Event, This Saturday at 5pm. 

上の行は、65文字を超える、時にはラインはこれはEvent, This\r\n として表示され、この

Snippet: It's time again for the Annual State Marching Event, This 
Saturday at 5pm. 

ように破壊されます正規表現を使用します:

preg_match('/Snippet:(\s)?+(.*)\./i', $html_part, $matches) ? $matches[2] : ''; 

私は句読点を逃れるために私の勝利を試しましたが、運はありません。 ご協力いただければ幸いです。前もって感謝します。

答えて

2

がそうのように、s修飾子を試してみてください:この修飾子が設定されている場合

/Snippet:(\s)?+(.*)\./is 

、パターン内のドットメタ文字は、改行を含め すべての文字にマッチします。それがなければ、改行は除外されます。 この修飾子は、Perlの/ s修飾子と同等です。 [^ a]などの負のクラス は、この修飾子の 設定とは関係なく、常に改行文字と一致します。

Source

Demo

+0

しかし、私は私が唯一、それは句読点で停止する理由である、段落内のいくつかの他のテキスト、の中でこれらの行を持っています。 s修飾子は、必要なものを超えて他のデータをキャプチャすることになります。 – Tower

+0

キャプチャグループを非貪欲にするようにしてください: '(。*?)' – nickb

+0

この '/ Snippet:(\ s)?+(。*)\ ./ Uis'を使用しても、それは完全な文章のように見えますか? – Tower

関連する問題