我在Perl regex语法中发现和替换有问题:
我有以下几行:
FILEGROUP [PAYMENT_MGMT](NAME = [PAYMENT_MGMT], FILENAME = '$(DefaultDataPath)$(DatabaseName)_PAYMENT_MGMT.ndf', FILEGROWTH = 102400 KB)
LOG ON (NAME = [SQL_log], FILENAME = '$(DefaultLogPath)$(DatabaseName)_log.ldf', SIZE = 5012 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 102400 MB) COLLATE Slovenian_CI_AS
所以我必须找到字符串SQL_log但只能将SIZE =替换为SIZE = 1024
我如何使用regex PCRE做到这一点?
捕获目标之前的所有内容,并将其放回替换中:
$x =~ s/^(.*?SQL_log.*?SIZE = )\d+/${1}1024/;
测试代码:
$x = "foo SQL_log bar SIZE = 5012 baz";
$x =~ s/^(.*?SQL_log.*?SIZE = )\d+/${1}1024/;
print $x;
输出:
foo SQL_log bar SIZE = 1024 baz
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句