我正在尝试将JS替换正则表达式转换为PHP正则表达式等效。
这是我的JS:
text=text.replace(/@#\$%\^&\*\(\)_\+=~`\{\[\}\]\|:;<>\/\\\t/g, ' ');
text=text.replace(/\s+-+\s+/g, '.');
text=text.replace(/\s*[,\.\?!;]+\s*/g, '.');
text=text.replace(/\s*\bbut\b\s*/g, '.');
text=text.replace(/\s{2,}/g, ' ');
这是我对PHP等价物的尝试:
$text = preg_replace('/@#\$%\^&\*\(\)_\+=~`\{\[\}\]\|:;<>\/\\\t/', ' ', $text);
$text = preg_replace('/\s+-+\s+/', '.', $text);
$text = preg_replace('/\s*[,\.\?!;]+\s*/', '.', $text);
$text = preg_replace('/\s*\bbut\b\s*/', '.', $text);
$text = preg_replace('/\s{2,}/', ' ', $text);
我这样做了吗?正则表达式是否应该相同?
答案 0 :(得分:0)
嗯,有正则表达式的几个“ flavors ”。他们每个人略有不同,但大多是相同的。
我只是假设您的Javascript正则表达式已经在运行,因为您要求转换。但是拥有样本目标文本真的很不错。
以下是我对您的查询的转换:
1. $re = "/@#\\$%\\^&\\*\\(\\)_\\+=~`\\{\\[\\}\\]\\|:;<>\\/\\\\\\t/";
2. $re = "/\\s+-+\\s+/";
3. $re = "/\\s*[,\\.\\?!;]+\\s*/";
4. $re = "/\\s*\\bbut\\b\\s*/";
5. $re = "/\\s{2,}/";
我使用网页regex101.com验证它是否有效,然后使用目标文本制作了一个快速的PHP脚本,以确认其有效。
这是一个Pastebin脚本,以及它的输出:http://pastebin.com/Yy2Zg11Z