我有以下文本文件:
...
"somewords MYWORD";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789
...
我需要匹配MYWORD,MYWORDOTHER,MYWORDDIFFERENT这个词,然后用“;”替换这个词之前的空格。 有人可以弄清楚正则表达式吗?
我做过类似的事情:
+[^ ][^ ][^ ][^ ][^ ][^ ][^ ]";
但这仅适用于特定的字长。我需要修改以获得任何长度的任何单词。
任何帮助?
答案 0 :(得分:0)
你为什么不str_replace()
?
$string = '"somewords MYWORD";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789';
$replace = str_replace(' MYWORD', ';MYWORD', $string);
echo $replace;
答案 1 :(得分:0)
这是未经测试的,但应该在引号中的最后一个单词之前替换空格...
preg_replace('/(".+) (\w+";\d+)/',"$1;$2", $your_string);
答案 2 :(得分:0)
preg_replace('/\s(\w+);\d/', ';$1', $text);
答案 3 :(得分:0)
也许这个:
$result = preg_replace('/([ ])(\w+)";/im', ';$2";', $subject);
在:
"somewords MYWORD";123123123123 "someother MYWORDOTHER";456456456456 "somedifferent MYWORDDIFFERENT";789789789
出:
"somewords;MYWORD";123123123123
"someother;MYWORDOTHER";456456456456
"somedifferent;MYWORDDIFFERENT";789789789
答案 4 :(得分:0)
使用此:
preg_replace('#"(\w+)\s+(\w+)"#',"$1;$2",$text);
答案 5 :(得分: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