preg_在一些引号之间替换PHP

preg_在一些引号之间替换PHP,php,regex,preg-replace,Php,Regex,Preg Replace,我对preg_replace有点困惑,因为我以前没有使用过regex。 我做了一些搜索,找不到任何适合我的情况的东西 我的日志包含与服务器的连接,如下所示: Username connected, address "123.123.123.123:1234" 我希望preg_replace查找此零件: address "123.123.123.123:1234" 并将其更改为: address "snip" 基本上把IP地址剪掉,这样这些日志就可以在网站上公开发布了 这是我目前正在测试的东

我对preg_replace有点困惑,因为我以前没有使用过regex。 我做了一些搜索,找不到任何适合我的情况的东西

我的日志包含与服务器的连接,如下所示:

Username connected, address "123.123.123.123:1234"
我希望preg_replace查找此零件:

address "123.123.123.123:1234"
并将其更改为:

address "snip"
基本上把IP地址剪掉,这样这些日志就可以在网站上公开发布了

这是我目前正在测试的东西

$new_log = preg_replace('/\address\s"(.*)"/', '', $old_log);

我只需要帮助您更正正则表达式。

这应该适合您:

(在这里,我将文件的所有行放入一个数组中。在此之后,我将部分
地址“[ip]”
替换为
地址“snip”
的。最后,我只需将数组再次保存在文件中)

  • \b断言单词边界处的位置(^\w |\w$|\w\w |\w\w)
    • 地址与字符地址完全匹配(区分大小写)
  • \s?匹配任何空白字符[\r\n\t\f]
    • 量词:在0到1次之间,尽可能多次,根据需要回馈[贪婪]
  • \“逐字匹配字符”
  • *?匹配任何字符(换行符除外)
    • 量词:*?在零次和无限次之间,尽可能少的次数,根据需要扩展[lazy]
  • \“逐字匹配字符”
之前的示例文件:

Username connected, address "123.123.123.123:1234"
Username connected, address "123.123.123.123:1234"
之后:

Username connected, address "snip"
Username connected, address "snip"
旁注:

如果您想阅读更多关于正则表达式的内容,还可以提供一些有用的链接:


请显示您的当前代码!我的错!这是我目前正在测试的东西。我认为这可能是一个彻底的失败,这是我第一次尝试使用正则表达式。(不知道如何使用这些代码标记,这是我第一次使用stackoverflow;u;)$new\u log=preg\u replace('/\address\s'(.*)“/”,'',$old\u log);正则表达式中这两个问题的可能重复是:
*
需要使用
减少贪婪。而且
\a
转义不属于那里。您可能应该使用
/address\s+“[\d.:]+”/
进一步限制它,其中
[\d.:]+
匹配任何数字、点、冒号的组合。哇,这里的每个人都非常有用!有人也修复了我原来的帖子。非常感谢大家:)是的!这很好用。您可能知道有什么好的教程可以更好地学习正则表达式吗?
array\u map
是无用的,因为
preg\u replace
可以将数组作为主题参数(在这种情况下显然返回数组)。为什么要使用捕获组?没有什么可捕捉的。您确定需要第二个单词边界吗?考虑一下
\K
特性,你更喜欢贪婪的否定字符类:
[^”]*
而不是懒惰的
*?
@CasimiretHippolyte谢谢,完全忘记了
preg_replace()
也可以接受数组。(不要问第二个单词的边界,不知道我在那里想了什么)
Username connected, address "123.123.123.123:1234"
Username connected, address "123.123.123.123:1234"
Username connected, address "snip"
Username connected, address "snip"