替换给定字符串和换行符之间的字符串
Replace string between given string and line break
我有一个文件,其中仅包含一次 search_for_me=12.21/13.31/14
,后跟一个 line break
。我想用 21.12/44.22/44
替换 12.21/13.31/14
。如何实现?
<?php
/*
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '1,';
echo preg_replace($pattern, $replacement, $string)."\n\n\n";
//April1,2003
*/
$string = file_get_contents('test.conf');
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
echo $string."\n\n";
$replace = "21.12/44.22/44";
$search = "/[^search_for_me=](.*)[^\n]/";
echo preg_replace($search,$replace,$string)."\n\n";
echo 'done';
这里我使用正则表达式进行搜索和替换,
正则表达式: /(search_for_me).*?\n/
,这将匹配 search_for_me
直到 \n
替换: '=21.12/44.22/44'."\n"
这里 </code> 将包含第一个捕获组 <code>search_for_me
.
<?php
/*
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '1,';
echo preg_replace($pattern, $replacement, $string)."\n\n\n";
//April1,2003
*/
$string = file_get_contents('test.conf');
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
echo $string."\n\n";
$replace = "21.12/44.22/44";
$search = "/(search_for_me)=.*?\n/";
echo preg_replace($search,'=21.12/44.22/44'."\n",$string)."\n\n";
试试这个:
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
printf("-String without replace:\n\n%s\n\n", $string);
$replace = '21.12/44.22/44';
$pattern = '/(?<=search_for_me\=)(.*)/';
$new_string = preg_replace($pattern, $replace, $string);
printf("-String with replace:\n\n%s", $new_string);
我使用正后视HERE
我有一个文件,其中仅包含一次 search_for_me=12.21/13.31/14
,后跟一个 line break
。我想用 21.12/44.22/44
替换 12.21/13.31/14
。如何实现?
<?php
/*
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '1,';
echo preg_replace($pattern, $replacement, $string)."\n\n\n";
//April1,2003
*/
$string = file_get_contents('test.conf');
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
echo $string."\n\n";
$replace = "21.12/44.22/44";
$search = "/[^search_for_me=](.*)[^\n]/";
echo preg_replace($search,$replace,$string)."\n\n";
echo 'done';
这里我使用正则表达式进行搜索和替换,
正则表达式: /(search_for_me).*?\n/
,这将匹配 search_for_me
直到 \n
替换: '=21.12/44.22/44'."\n"
这里 </code> 将包含第一个捕获组 <code>search_for_me
.
<?php
/*
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '1,';
echo preg_replace($pattern, $replacement, $string)."\n\n\n";
//April1,2003
*/
$string = file_get_contents('test.conf');
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
echo $string."\n\n";
$replace = "21.12/44.22/44";
$search = "/(search_for_me)=.*?\n/";
echo preg_replace($search,'=21.12/44.22/44'."\n",$string)."\n\n";
试试这个:
$string= <<<EOT
bla bla bla
search_for_me=12.21/13.31/14
bla bla bla
EOT;
printf("-String without replace:\n\n%s\n\n", $string);
$replace = '21.12/44.22/44';
$pattern = '/(?<=search_for_me\=)(.*)/';
$new_string = preg_replace($pattern, $replace, $string);
printf("-String with replace:\n\n%s", $new_string);
我使用正后视HERE