试试这个:
(^| ).( |$)
分解:@H_502_2@1. (^| ) -> Beginning of line or space
2. . -> Any character
3. ( |$) -> Space or End of line
实际代码:@H_502_2@$string = preg_replace('/(^| ).( |$)/','$1',$string);
注意:我不熟悉PHP正则表达式的工作原理,因此代码可能需要稍微调整,具体取决于实际的正则表达式需求的声明方式.@H_502_2@
正如m.buettner所指出的,这里的代码中会有一个尾随的空格.需要一个修剪来清除它.@H_502_2@
编辑:Arnis Juraga指出,这不会清除b c过滤掉b的多个单个字符.如果这是一个问题,请使用此正则表达式:@H_502_2@(^| ).(( ).)*( |$)
添加到中间的(().)*将查找任何字符后跟0的任何空格.不利的一面是,最终会出现一系列单个字符所在的双倍空格.@H_502_2@
这意味着:@H_502_2@The a b c dog
会变成这样:@H_502_2@The dog
执行替换以获取单个字符后,您需要使用以下正则表达式来定位双空格,然后用单个空格替换@H_502_2@( ){2}