Php 简单正则表达式不是

Php 简单正则表达式不是,php,regex,Php,Regex,我正在寻找一种只在一个preg\u replace $url = "stackoverflow"; if(!preg_match('/apple/',$url)){ $url = $url.".apple.com"; } ps:修饰符是可能有用 (?:)*生成非捕获模式。它匹配零个或多个(?!apple)实例。除了apple和$0之外,它告诉我们在匹配模式时获取整个字符串。上面建议的示例不一样,因为当字符串不是以appleas开头时,它将匹配任何内容?!apple条件仅在字符串

我正在寻找一种只在一个
preg\u replace

$url = "stackoverflow";
  if(!preg_match('/apple/',$url)){
    $url = $url.".apple.com";
  }
ps:修饰符
可能有用


(?:)*
生成非捕获模式。它匹配零个或多个
(?!apple)
实例。除了
apple
$0
之外,它告诉我们在匹配模式时获取整个字符串。上面建议的示例不一样,因为当字符串不是以
apple
as
开头时,它将匹配任何内容?!apple
条件仅在字符串开头应用一次。

您想实现什么?你想要像
stackoverflow.com.apple.com
这样的url吗?让我们假设url=“stackoverflow”没有TLDErr。你的问题没有真正的意义。绳子总是以苹果结尾吗?如果没有,那么您就不能使用正则表达式来追加字符串。因此,基本上,您希望任何尚未包含单词apple的$url现在都追加“.apple.com”?是的!!为什么这么疯狂?lololookahead可以放在
(.)*
括号之外(因为匹配被锚定),防止不必要的字符串扫描:
'/^(?!apple)。*$/i
@mathematic.coffee请尝试您的regexp-它不会正常工作requested@Josh(?:)*生成非捕获模式。它匹配零个或多个(?苹果)实例。这是除了苹果之外的任何东西,$0告诉我们在匹配模式时获取整个字符串。上面建议的示例不同,因为当字符串不以
apple
as开头时,它将匹配任何内容?!apple条件仅在字符串开头应用一次。
$str = 'something';
echo preg_replace('/^(?:(?!apple).)*$/is', '$0.apple.com', $str);