preg_replace,目标短于x个字符,但数字除外

时间:2017-05-03 18:50:11

标签: php regex

我正在修改使用preg_replace

的现有代码行
$string = preg_replace('/(?<=\s)[^\s]{1,'.$x.'}(?=\s)/Su', ' ', $string);

我的基本理解是,用空格替换少于$ x个字符的单词。我已经搜索了正则表达式示例来做同样的事情,但它们看起来有很大的不同。有人可以简单地解释一下这个特殊的正则表达式到底做了什么吗?

无论如何,我要修改的内容基本上是让它按原样工作,除了排除数字。因此,单个数字不会被空格替换。

感谢

1 个答案:

答案 0 :(得分:0)

  

有人可以简要解释一下这个特殊的正则表达式到底做了什么吗?

正则表达式: (?<=\s)[^\s]{1,'.$x.'}(?=\s)

<强>解释

(?<=\s)查看空白和匹配零度。例如a |b其中|描绘零宽度。

[^\s]{1,'.$x.'}匹配非空格字符1到$ x没有时间。可以使用\S,同样的事情。

(?=\s)前瞻一个空格并匹配零宽度,以便之前匹配的非空白字符后跟一个空格。例如a| b