假设我有很多字符串,其中的字符没有预定义的位置.....
$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);
答案 0 :(得分:8)
您可以结合使用单词边界和后面的负数表示“捕获任何不带#的数字集”:
$string = preg_replace('/\b(?<!#)(\d+)/', '', $string);
如果您还想删除数字后的空格:
$string = preg_replace('/\b(?<!#)(\d+\s)/', '', $string);