我正在开发一个脚本,用于开发某些字母数字字符串,用短划线分隔-.我需要测试字符串以查看是否有任何字符集(字符串之间的字符)是相同的.如果是,我需要巩固它们.在我的情况下,重复的字符总是出现在前面.
Examples:
KRS-KRS-454-L
would become:
KRS-454-L
DERP-DERP-545-P
would become:
DERP-545-P
mhy*_*itz 10
<?php
$s = 'KRS-KRS-454-L';
echo preg_replace('/^(\w+)-(?=\1)/', '', $s);
?>
// KRS-454-L
这使用正向前瞻 (?=...)来检查重复的字符串.
请注意,\w还包含下划线.如果您只想限制为字母数字字符,请使用[a-zA-Z0-9].
另外,^正如你所提到的那样,我已经坚持:"重复的字符总是出现在前面[...]"