用正则表达式否定

时间:2013-12-27 07:49:05

标签: php regex

试图否定 字符串,但似乎没有任何作用。

这是我想要做的事情:

输入:

example: word1 word2 

我想要的输出:

example: **** word2

当前代码:

preg_replace('/example: (\s|.nbsp;)?[^<\n\r (&nbsp;)]*', 'example: ****', $sContent);

据我所知,[^<\n\r (&nbsp;)]需要改变。目前它分别来自&nbsp;的每个符号,我希望它采用整个字符串。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以简单地使用.*?来匹配&nbsp;之前的所有内容,并使用捕获组来放回其他所有内容:

preg_replace('/(example: ).*?(&nbsp;)/', '$1****$2', $sContent);

regex101 demo

或者您可以使用外观来避免捕获组......

preg_replace('/(?<=example: ).*?(?=&nbsp;)/', '****', $sContent);

regex101 demo