Notice: Undefined index: in /data/phpspider/phplib/misc.function.php on line 226
Php 用正则表达式匹配单词_Php_Regex - Fatal编程技术网

Php 用正则表达式匹配单词

Php 用正则表达式匹配单词,php,regex,Php,Regex,我有以下文本文件: ... "somewords MYWORD";123123123123 "someother MYWORDOTHER";456456456456 "somedifferent MYWORDDIFFERENT";789789789 ... 我需要匹配单词MYWORD、MYWORDOTHER、MYWORDDIFFERENT,然后用“;”替换该单词前面的空格。 有人能猜出正则表达式吗 我做过类似的事情: +[^ ][^ ][^ ][^ ][^ ][^ ][^ ]"; 但这只适

我有以下文本文件:

...
"somewords MYWORD";123123123123
"someother MYWORDOTHER";456456456456
"somedifferent MYWORDDIFFERENT";789789789
...
我需要匹配单词MYWORD、MYWORDOTHER、MYWORDDIFFERENT,然后用“;”替换该单词前面的空格。 有人能猜出正则表达式吗

我做过类似的事情:

 +[^ ][^ ][^ ][^ ][^ ][^ ][^ ]";
但这只适用于特定的字长。我需要修改以获得任何长度的单词


有什么帮助吗?

为什么不
str\u replace()


这是未经测试的,但应该可以替换引号中最后一个单词前的空格

preg_replace('/(".+) (\w+";\d+)/',"$1;$2", $your_string);
也许是这样:

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

使用以下命令:

preg_replace('#"(\w+)\s+(\w+)"#',"$1;$2",$text);
编辑

好吧,我在原来的答案上打错了


现在用代码板更正:

那么…每行只有一个空格?没有更多这样的空格:
。。。“rabba somewords MYWORD”;123123“fafa somether MYWORDOTHER”;456456456456“juju some different myword different”;789789789…
很抱歉,我无法设置比此更好的格式…:-($str=preg\u replace(“/(\w+);\”(\d)/i“;$1;\”$2“,$line);//如果您只想替换最后一个空格,请使用这一行。这可能是本主题中更好的一行。但是,如果您不想替换我需要的第一个逗号的最后一个空格,请取消锁定…可以更改以完成此操作吗?@lbar Oops,对不起,我在正则表达式中输入了一个错误。现在用一个代码板示例修复。我们这里有两个winnere…这是一个及以下…:-)对不起,我不能投票,因为我的声誉不足15分……怎么办?@lbar只是快速检查了一下,似乎你现在什么都做不了……只接受其中一个答案……第二个获胜者:-)对不起,我不能投票,因为我的声誉不足15分……怎么办?这是你的问题,所以我认为你可以将解决方案标记为“已接受”。但我不确定。不要介意。
$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
preg_replace('#"(\w+)\s+(\w+)"#',"$1;$2",$text);
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
}