我的RegEx代码在字符串内的标点符号的左侧和右侧删除了空格。删除这些空格后,结果还可以,但是有些单词已经合并在一起。
我试图更改RegEx代码,但结果恰好是我想要的,即使我试图在 regex101.com等在线测试网站上测试RegEx。结果在那里还可以,并且单词不会连接在一起,但是在我的代码中,结果是不同的。我什至尝试过使用不同样式的不同RegEx代码,但是在我的代码中,仍有一些单词结合在一起。
顺便说一句,字符串的语言为 Farsi
。但是该方法对两种方法都适用。
$text = "سلام ، این یک متن ( است) متشکرم.";
$removePattern = "/(\s+)*([\.\!\:\)\]\}\(\[\{\?\,\;\؟\،\؛])(\s+)*/";
$replace = "$2";
$text = preg_replace($removePattern, $replace, $text);
我希望输出结果是
سلام،این یک متن(است)متشکرم.
但是结果是这样的
سلاماین یک متنامتحانیاست (شایداینطوری) بهتر، باشه
您能看到سلاماین
和متنامتحانیاست
是如何连接并粘在一起的吗?
我的问题是如何解决此问题,解决该问题的解决方案是什么?这必须适用于波斯语内容不同的不同字符串。
答案 0 :(得分:0)
您可以在Linux和Windows系统之间进行通信。 他们对空白字符的处理方式不同。
反正
"/(\s+)*([\.\!\:\)\]\}\(\[\{\?\,\;\؟\،\؛])(\s+)*/";
change to
"/(\R+)*([\.\!\:\)\]\}\(\[\{\?\,\;\؟\،\؛])(\R+)*/";
无论系统如何,您都将匹配任何空格字符
答案 1 :(得分:0)
您只需要替换两次即可。 首先将正则表达式“ [[] [] *”替换为(,第二次将其替换为“ [] * []]””替换为