使用php preg_replace替换最接近的匹配单词

时间:2014-02-22 18:54:19

标签: php regex preg-replace

目前我正在使用php preg_replace来替换字符串的某些部分

12854827.12854827_IDS.0 12854827.12854827_892.0
12854827.12854827_IDS.0 12854827.12854827_892.0

这里我需要的输出是

12854827.IDS.0 12854827.892.0
12854827.IDS.0 12854827.892.0

但是preg_replace产生了输出

12854827.892.0
12854827.892.0

我在下面给出的php代码

preg_replace('/\..*_/', '.', $A)

我如何解决上述问题? &安培; 我如何使用php preg_replace替换最近的匹配单词?

2 个答案:

答案 0 :(得分:0)

由于您使用的是数字替换,因此您可以使用以下内容:

preg_replace('/\.\d+_/', '.', $A);

答案 1 :(得分:0)

使用以下正则表达式捕获点字符(.)和下划线(_)之间的所有内容:

/\.([^_.]+)_/

故障:

  • / - 开始分隔符
    • \. - 匹配文字点(.)字符
    • [^_.] - 匹配任何不是._一次或多次的字符的字符类
    • _ - 匹配文字下划线(_)字符
  • / - 结束分隔符

preg_replace()语句应如下所示:

preg_replace('/\.([^_.]+)_/', '.', $A);

实际上,它说:“使用.”替换_.之间的所有内容。

输出:

12854827.IDS.0 12854827.892.0
12854827.IDS.0 12854827.892.0

Demo