一致する明示的な正規表現を使用し、置換を(match 1 space match 2)(not- ) (not- )
として追加します。として明示的$1 $2
にコーディングする必要がある場合があります。not-
([^;]|[^p];|[^s]p;|[^b]sp;|[^n]bsp;|[^&]nbsp;)
編集: [否定的な] ルックアラウンドは有用かもしれませんが (そして確かにコード全体が少なくなります)、各アプローチの速度を測定することをお勧めします。ルックアラウンドの速度について直接話すことはできませんが、正規表現の特定のメカニズムは、他のメカニズムに比べて非常に遅いことがわかりました。速度が問題になる場合は、正規表現をスキップしてstrpos
、substring
操作とテストの組み合わせを使用できます。これは、作成するのが面倒であっても、正規表現よりもはるかに高速であることがよくあります。これは、探している非常に明示的な文字列がある場合にのみお勧めします。文字列が明確でない場合は、正規表現が間違いなく適しています。
このインスタンス (疑似コード) の場合、文字列strpos
検索は単純でstrpos($mystring, " ")
、一致が見つかったら を呼び出しますstrpos($mystring, " ")
。2 つのindex
呼び出しが同じ値を返す場合は、この置換をスキップして、インデックス ポイントの後の文字列を検索できます (1 回の
検索は の後indexDoubleFound + 12
に開始しますが、2回の
検索は の後indexDoubleFound + 6
に開始して、見逃さないようにし、意図せずに取得しないようにします)。交換)。