正则表达式/设置为小写和大写单词之间有很多点
Regex / Setting to much dots between lowercase and uppercase Words
我在使用 Regex 时遇到了一些问题,这个脚本的目的是对某些单词进行自动更正
他应该匹配和替换的例子是:
Word.Word
致:字。单词
wordWord
致:字。单词
我用下面的脚本来做到这一点
function filter_string($string) {
$string = preg_replace("/([a-z])([A-Z])/", ". ", $string);
$string = preg_replace("/([a-z]).([A-Z])/", ". ", $string);
$string = str_replace("...", "&hellip", $string);
$string = str_replace("Games. Com", "GamesCom", $string);
$string = str_replace("Pv. P", "PvP", $string);
$string = str_replace("Pv. E", "PvE", $string);
$string = str_replace("Blizz. Con", "BlizzCon", $string);
$string = str_replace(". PvP", " PvP", $string);
$string = str_replace(". PvE", " PvE", $string);
return $string;
但出于某种原因他也匹配
Legendary Pictures zeigt uns das offizielle Poster zum Warcraft Film.
并替换为
Legendary. Pictures zeigt uns das offizielle. Poster zum. Warcraft. Film.
我不明白所有的点是从哪里来的,也不知道他为什么要匹配这个,我希望有人能给我一个提示,它有什么问题。
不加点试试space
$string = preg_replace("/([a-z])([A-Z])/", ".", $string);
$string = preg_replace("/([a-z]).([A-Z])/", ".", $string);
替换你的第二个正则表达式:
$string = preg_replace("/([a-z]).([A-Z])/", ". ", $string);
这个:
$string = preg_replace("/\.(\w)/", ". ", $string);
您可能忘记转义点(它是任何字符的标记)。
我在使用 Regex 时遇到了一些问题,这个脚本的目的是对某些单词进行自动更正
他应该匹配和替换的例子是:
Word.Word
致:字。单词
wordWord
致:字。单词
我用下面的脚本来做到这一点
function filter_string($string) {
$string = preg_replace("/([a-z])([A-Z])/", ". ", $string);
$string = preg_replace("/([a-z]).([A-Z])/", ". ", $string);
$string = str_replace("...", "&hellip", $string);
$string = str_replace("Games. Com", "GamesCom", $string);
$string = str_replace("Pv. P", "PvP", $string);
$string = str_replace("Pv. E", "PvE", $string);
$string = str_replace("Blizz. Con", "BlizzCon", $string);
$string = str_replace(". PvP", " PvP", $string);
$string = str_replace(". PvE", " PvE", $string);
return $string;
但出于某种原因他也匹配
Legendary Pictures zeigt uns das offizielle Poster zum Warcraft Film.
并替换为
Legendary. Pictures zeigt uns das offizielle. Poster zum. Warcraft. Film.
我不明白所有的点是从哪里来的,也不知道他为什么要匹配这个,我希望有人能给我一个提示,它有什么问题。
不加点试试space
$string = preg_replace("/([a-z])([A-Z])/", ".", $string);
$string = preg_replace("/([a-z]).([A-Z])/", ".", $string);
替换你的第二个正则表达式:
$string = preg_replace("/([a-z]).([A-Z])/", ". ", $string);
这个:
$string = preg_replace("/\.(\w)/", ". ", $string);
您可能忘记转义点(它是任何字符的标记)。