更正正则表达式以删除单词之后或之前的空格

| 我正在使用下面的正则表达式字符串查找在这种情况下仅紧跟一个空格的单词。我在这里想念什么?这将删除所有空间,但是我需要一些空间。我只是想删除紧跟空格的单词,我该怎么做。输入就是一个例子。 (一个二三个)第一次替换应删除\“ Three \”,第二个替换应删除\“ One \”,仅保留两个。如果我只想剩下三个,我将只使用第二行代码。我的主要问题是在这里获取正确的正则表达式模式。
preg_replace(\'/\\s[A-z]/\', \'\', $data);
preg_replace(\'/[A-z]\\s/\', \'\', $data);
    
已邀请:
最大的问题是在您的示例中,“ Two”在其前面也有一个空格。因此,第一次替换将同时删除\“ Two \”和\“ Three \”(即,将ѭ1更改为
[A-Za-z]+
)。 我想你想要这样的东西:
/\\s[a-z]+(?!\\s)/i
/(?<!\\s)[a-z]+\\s/i
注意添加了“ 4”量词。否则,the5将只匹配一个字符,因此您的“一二三”示例可能会导致“ On wree”。 同样,
[A-z]
在技术上会导致不确定的行为(并且可能引发异常),因为大写字母A到小写字母z都不是有效范围。您需要
[A-Za-z]
或使用
[a-z]
进行不区分大小写的匹配,如上所述。     
[A-z]
仅匹配一个字母-并且它也不正确,因为您应声明
[a-zA-Z]
以匹配所有大写和小写字母。 尝试:
/\\s[a-zA-Z]+/
/[a-zA-Z]+\\s/
之后,您的代码应如下所示:
preg_replace(\'/\\s[a-zA-Z]+/\', \'\', $data);
preg_replace(\'/[a-zA-Z]+\\s/\', \'\', $data);
    
加+可在A和z之间获得一个或多个字符。
preg_replace(\'/[A-Za-z]+\\s/\', \'\', $data);
preg_replace(\'/\\s[A-Za-z]+/\', \'\', $data);
    

要回复问题请先登录注册