PHP正则表达式插入' /'在一系列数字之后

时间:2014-07-28 16:23:50

标签: php regex

我有几千个字符串格式为

"12345This_is_awesome-2014.html"

我需要做的是在第一个数字序列“12345”之后插入正斜杠

我发现了一个正则数字序列,它会在数字序列之后插入正斜杠

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

但是我需要在第一个数字序列之后插入正斜杠

第一个序列的长度并不总是相同,有时它的前面有一个字符

3 个答案:

答案 0 :(得分:7)

您可以使用:

$string = preg_replace('~^(\D*\d+)(?!/)(?=\D|$)~', '$1/', $string)

Regex Demo

答案 1 :(得分:4)

这应该有效

(?<=\d)(?=\D)

Live Demo

示例代码:

$re = "/(?<=\\d)(?=\\D)/";
$str = "12345This_is_awesome-2014.html";
$subst = '/';

$result = preg_replace($re, $subst, $str, 1);

输出:

12345/This_is_awesome-2014.html

模式说明:

  (?<=                     look behind to see if there is:
    \d                       digits (0-9)
  )                        end of look-behind
  (?=                      look ahead to see if there is:
    \D                       non-digits (all but 0-9)
  )                        end of look-ahead

答案 2 :(得分:3)

尝试:

preg_replace("/^\D*\d+/", "$0/", $string);

这将匹配开头的任何非数字,然后匹配目标数字,并在它们后面添加斜杠。它不会进一步影响数字。