gpt4 book ai didi

regex - 否定字符类中的单引号

转载 作者:行者123 更新时间:2023-11-29 09:22:32 28 4
gpt4 key购买 nike

我有以下代码,我尝试使用 SED 将 assign 替换为 always @(*)

本质上我试图忽略字符类中的 ' 但 SED 似乎仍然匹配它。如果该行包含 ' 我不希望 sed 捕获该行(我的正则表达式比这复杂得多,但我希望 sed 捕获我的正则表达式的行并忽略与我的正则表达式匹配的行但包含一个 ')

echo "assign sample_signal = '0;" | sed '/[^\x27]/ {s/assign/always @(*)/g}'

结果:总是@(*) sample_signal = '0;

最佳答案

请试试这个(GNU sed):

$ echo "assign sample_signal = '0;" | sed -n '/[\x27]/!{s/assign/always @(*)/g; p}'

$ echo "assign sample_signal = 0;" | sed -n '/[\x27]/!{s/assign/always @(*)/g; p}'
always @(*) sample_signal = 0;

你犯的两个错误:
1、/[^\x27]/表示匹配任何不是'的字符,但是有很多字符不是',所以正则表达式无论如何都会匹配。
2. 你没有使用-n 来抑制输出,所以匹配与否,s是否正确,该行无论如何都会被打印出来。

所以我改成了/[\x27]/!{},意思是当\x27匹配时,不执行 block {} .
(用 sed 的话说,它不匹配时执行。)
并且通过 -n 开关和 block 中的 p,忽略带有 ' 的行。

关于regex - 否定字符类中的单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54273810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com