部分的なヘルプが見つかりましたが、必要なことを完全に達成できないようです。次のことができる必要があります。
3 文字を超える 2 つの単語の間にある 1 ~ 3 文字の単語を、match any 式に置き換える正規表現が必要です。
例えば:
walk to the beach ==> walk(.*)beach
1 ~ 3 文字の単語の前に 3 文字を超える単語がない場合、その 1 ~ 3 文字の単語を'<word> ?'
例えば:
on the beach ==> on ?the ?beach
ルールは単純であるほど良いです (もちろん、よりパフォーマンスが高く、より複雑な代替バージョンがある場合は、それを採用しますが、最終的には大量に使用されることが予想されます)。
これは、PHP コンテキストで使用される可能性が高く、preg_replace
. したがって、その文脈に置くことができれば、さらに良いでしょう!
ちなみに、これまでに入手したものは以下のとおりです。
$string = preg_replace('/\s+/', '(.*)', $string);
$string = preg_replace('/\b(\w{1,3})(\.*)\b/', '${1} ?', $string);
しかし、それは次の結果になります:
walk to the beach ==> 'walk(.*)to ?beach'
これは私が望むものではありません。'on the beach'
正しく翻訳されているようです。