-3

我是正则表达式等的初学者,我不知道如何为其构建过滤器。我基本上想做的是:

我有一个 .txt 文件,带有 IP 和 unix 时间戳,例如11.11.11.11:1393598(IP:timestamp),我想用正则表达式替换与某个 IP 关联的时间戳,所以如果有 3 个 ip 和时间戳在文本文件(用空格分隔)我只想用 ip 替换一个11.11.11.11 (11.11.11.11:343434 to 11.11.11.11:999999),现在我对整个正则表达式完全陌生,所以我真的不知道该怎么做,所以我没有尝试过的代码:/

任何帮助是极大的赞赏!

4

2 回答 2

2
$string = '11.11.11.11:1393598';
$search = preg_quote('11.11.11.11');
$replace = '999999';
$string = preg_replace("/($search):\d+/", "$1:$replace", $string);
于 2013-10-29T18:04:10.840 回答
1

未经测试,我不太了解php。

 # $str = preg_replace_callback('/(11(?:\.11){3}:)(?:(343434)|(999999))/',
 #              function( $matches ){
 #                   $repl = "999999";
 #                   if ( $matches[3] != "" ) {
 #                        $repl = "222222";
 #                   }
 #                   return $matches[1] . $repl;
 #              },
 #              $str);
 # 
 # 

 # (11(?:\.11){3}:)(?:(343434)|(999999))

 (                                  # (1 start)
      11
      (?: \.11 ){3}
      :
 )                                  # (1 end)
 (?:
      ( 343434 )                    # (2)
   |  ( 999999 )                    # (3)
 )
于 2013-10-29T18:34:44.193 回答