删除字符串中的所有数字,除非它们遵循PHP中的特定字符

时间:2018-10-04 08:57:27

标签: php regex string

假设我有很多字符串,其中的字符没有预定义的位置.....

$string = '324 Example words #25 more words';
$string2 = 'Sample words 324 Example words #25 more words #26';

我想删除php字符串中的所有数字,除非它们后面紧跟一个'#'字符。关于删除字符后的字符串部分的文章很多,但我只想保留某个字符后面的数字,直到下一个空格。上面的示例字符串应如下所示……

   $string = 'Example words #25 more words';
   $string2 = 'Sample words Example words #25 more words #26';

有可能吗?可以用正则表达式完成吗?如何修改以下代码片段以实现此目的?

  $string = preg_replace('/[0-9]+/', '', $string);

1 个答案:

答案 0 :(得分:8)

您可以结合使用单词边界和后面的负数表示“捕获任何不带#的数字集”:

$string = preg_replace('/\b(?<!#)(\d+)/', '', $string);

如果您还想删除数字后的空格:

$string = preg_replace('/\b(?<!#)(\d+\s)/', '', $string);

示例:https://www.phpliveregex.com/p/psK