1

入力:ボールボールコード

出力は次のようになります: ボール コード

入力: awycodeawy

出力は次のようになります: awycode

これらを試しましたが、うまくいきませんでした:

$q = preg_replace("/\s(\w+\s)\1/i", "$1", $q);
$q = preg_replace("/s(w+s)1/i", "$1", $q);
4

2 に答える 2

5

これは、OPの問題に対する正規表現ベースのソリューションに対する前向きな先読みベースの試みです。

$arr = array('ball ball code', 'abcabc bde bde', 'awycodeawy');
foreach($arr as $str)
   echo "'$str' => '" . preg_replace('/(\w{2,})(?=.*?\\1)\W*/', '', $str) ."'\n";

出力

'ball ball code' => 'ball code'
'abcabc bde bde' => 'abc bde'
'awycodeawy' => 'codeawy'

入力に対してできるように、 の'awycodeawy'代わり'codeawy'に になり'awycode'ます。その理由は、 にvariable length lookaheadないものを見つけることができるからですlookbehind

于 2012-05-18T15:59:20.117 に答える
4
$q = preg_replace("/\b(\w+)\s+\\1\b/i", "$1", $q);
于 2012-05-18T15:19:27.580 に答える