正则表达式条件

正则表达式条件

在我的代码文件中,我有几行,并且我想用一些帮助替换T V= X T(A);后面的文本,我得到了这个 查找和替换的模式,它工作得很好,但问题是当我们没有参数要传递时 ,例如,替换后它会像(看到额外的逗号)我知道这是因为有人可以帮我去掉那个多余的逗号,可惜我不是正则表达式人。=X(T,A)s/X\s+([^\(]*)\(/X(\1,/g;TT V= X T();X(T,)/X(\1,

是否有任何类型的条件我们必须说 if the ()isempty then doX(\1/g而不是/X(\1,/g

答案1

如果你在文件上运行它,类似这样的事情应该可以做到运行第一个替换后会出现错误:

sed 's/X(\([^,]*\),)/X(\1)/g'

它将替换X(<something-not-a-comma>,)X(<something-not-a-comma>).

要一次性完成两个替换:

sed -e 'the first substitution' -e 'the second substitution'

答案2

@Kusalananda 看起来他在第一个替换命令中使用了没有 -E 选项的扩展正则表达式

sed -e 's/X\s+([^\(]*)\(/X(\1,/g' -e 's/X(\([^,]*\),)/X(\1)/g' ./file

但第二个命令看起来不错。在扩展正则表达式中制作所有内容,这将起作用

sed -Ee 's/X\s+([^\(]*)\(/X(\1,/g;s/X\(([^,]*),\)/X(\1)/g' ./file

相关内容