1

我有以下文本文件:

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

我需要匹配单词 MYWORD、MYWORDOTHER、MYWORDDIFFERENT,然后用“;”替换该单词之前的空格。有人可以找出正则表达式吗?

我做过类似的事情:

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

但这仅适用于特定的字长。我需要修改以获得任何长度的任何单词。

有什么帮助吗?

4

6 回答 6

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('#"(\w+)\s+(\w+)"#',"$1;$2",$text);
于 2012-09-07T09:39:23.223 回答
0
preg_replace('/\s(\w+);\d/', ';$1', $text);
于 2012-09-07T09:38:04.700 回答
0

也许是这样:

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

在:

"somewords MYWORD";123123123123
"另一个 MYWORDOTHER";456456456456
"一些不同的 MYWORDDIFFERENT";789789789

出去:

"somewords;MYWORD";123123123123
"someother;MYWORDOTHER";456456456456
"somedifferent;MYWORDDIFFERENT";789789789
于 2012-09-07T09:39:02.100 回答
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 回答