1

次のテキストファイルがあります。

...
"somewords MYWORD";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789
...

MYWORD、MYWORDOTHER、MYWORDDIFFERENT という単語を一致させ、この単語の前のスペースを「;」に置き換える必要があります。誰かが正規表現を理解できますか?

私はそのようなことをしました:

 +[^ ][^ ][^ ][^ ][^ ][^ ][^ ]";

ただし、これは特定の語長でのみ機能します。任意の長さの単語を取得するには、変更する必要があります。

何か助けはありますか?

4

6 に答える 6

0
while($line=fgets($file))
{
    $str=preg_replace("/ (\w)/i",";$1",$line);//use this line if you want to replace every space
    $str=preg_replace("/ (\w+)\";(\d)/i",";$1\";$2",$line);//use this line if you only want to replace the last space
    echo $str;//or wherever you want to output
}

編集

了解しました。元の回答でタイプミスをしました。

コードパッドで修正されました: http://codepad.org/leQHTuFR

于 2012-09-07T09:44:51.477 に答える
0

どうしてstr_replace()ですか?

$string = '"somewords MYWORD";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789';

$replace = str_replace(' MYWORD', ';MYWORD', $string);
echo $replace;

コードパッドの例

于 2012-09-07T09:36:26.560 に答える
0

これはテストされていませんが、引用符内の最後の単語の前のスペースを置き換えるために機能するはずです...

preg_replace('/(".+) (\w+";\d+)/',"$1;$2", $your_string);
于 2012-09-07T09:36:56.363 に答える
0
preg_replace('/\s(\w+);\d/', ';$1', $text);
于 2012-09-07T09:38:04.700 に答える
0

多分これ:

$result = preg_replace('/([ ])(\w+)";/im', ';$2";', $subject);

の:

"私の言葉";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789

アウト:

"somewords;MYWORD";123123123123
"someother;MYWORDOTHER";456456456456
"somedifferent;MYWORDDIFFERENT";789789789
于 2012-09-07T09:39:02.100 に答える
0

これを使って :

preg_replace('#"(\w+)\s+(\w+)"#',"$1;$2",$text);
于 2012-09-07T09:39:23.223 に答える