Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 多行上的负前瞻_Regex_Regex Negation - Fatal编程技术网

Regex 多行上的负前瞻

Regex 多行上的负前瞻,regex,regex-negation,Regex,Regex Negation,如果配置无效,我想将“keepalive”替换为“keepalive 10 60”,如果找不到“keepalive”,则插入“keepalive 10 60” 到目前为止,我已经想出了这个方法,但在找到并替换“keepalive”时,它仍然会插入每一个空行: ^keepalive(?!(\s[[:digit:]]{1,3}){2}).*\n|((?<!keepalive)^$(?!keepalive)) 预期: keepalive 60 90 resolv-retry infinite

如果配置无效,我想将“keepalive”替换为“keepalive 10 60”,如果找不到“keepalive”,则插入“keepalive 10 60”

到目前为止,我已经想出了这个方法,但在找到并替换“keepalive”时,它仍然会插入每一个空行:

^keepalive(?!(\s[[:digit:]]{1,3}){2}).*\n|((?<!keepalive)^$(?!keepalive))
预期:

keepalive 60 90

resolv-retry infinite
keepalive 60 90

resolv-retry infinite
结果:

keepalive 60 90
keepalive 60 90

resolv-retry infinite
keepalive 60 90

keepalive 60 90

resolv-retry infinite
场景2:

keepalive 60

resolv-retry infinite


resolv-retry infinite
预期:

keepalive 60 90

resolv-retry infinite
keepalive 60 90

resolv-retry infinite
结果:

keepalive 60 90
keepalive 60 90

resolv-retry infinite
keepalive 60 90

keepalive 60 90

resolv-retry infinite
我对regex非常缺乏经验,非常感谢任何指导和提示

分两步进行:

步骤1:通过删除“keepalive 60”来规范文本

步骤2:将“resolv retry infinite”替换为您想要的任何内容

       re.sub(r"resolv-retry infinite","whatever your want", your_str)
       #adjust for "\n" as necessary 
分两步进行:

步骤1:通过删除“keepalive 60”来规范文本

步骤2:将“resolv retry infinite”替换为您想要的任何内容

       re.sub(r"resolv-retry infinite","whatever your want", your_str)
       #adjust for "\n" as necessary 

对于给定的场景:谢谢,但是我还想用“resolv retry infinite”做同样的事情,所以它不适合我的用例。问题似乎是(消极的)向前看/向后看并没有扫描整个文件。也许像这样的问题和以前一样,但感谢您的努力。对于给定的场景:谢谢,但我也想用“resolv retry infinite”做同样的事情,所以它不适合我的用例。问题似乎是(消极的)向前/向后看并没有扫描整个文件。也许像这样的问题和以前一样,但感谢您的努力。我想添加“resolv retry infinite”,如果不是在字符串中,或者,例如,将“resolv retry 5”替换为“keepalive 60”。无论如何,因为我需要一个bash脚本,所以我最终只使用了“sed-I-E的/^.*keepalive.$///gm;t;d'$config_file”和“printf”\nkeepalive 10 60“>>$config_file”,尽管使用一个正则表达式(命令?)会很好。如果不是在字符串中,我想添加“resolv retry infinite”,或者,例如,替换“resolv retry 5”“keepalive 60”也一样。无论如何,因为我需要一个bash脚本,所以我最终只使用了“sed-I-E的/^.*keepalive.$///gm;t;d'$config_file”和“printf”\nkeepalive 10 60“>>$config_file”,尽管使用一个正则表达式(命令?)会很好。