gpt4 book ai didi

regex - awk:从字符串中转义正则表达式运算符的函数

转载 作者:行者123 更新时间:2023-11-29 09:25:36 26 4
gpt4 key购买 nike

需要一个函数来转义 awk 脚本中包含正则表达式运算符的字符串。

我遇到了这个“丑陋”的解决方案:

function escape_string( str )
{
gsub( /\\/, "\\\\", str );
gsub( /\./, "\\.", str );
gsub( /\^/, "\\^", str );
gsub( /\$/, "\\$", str );
gsub( /\*/, "\\*", str );
gsub( /\+/, "\\+", str );
gsub( /\?/, "\\?", str );
gsub( /\(/, "\\(", str );
gsub( /\)/, "\\)", str );
gsub( /\[/, "\\[", str );
gsub( /\]/, "\\]", str );
gsub( /\{/, "\\{", str );
gsub( /\}/, "\\}", str );
gsub( /\|/, "\\|", str );

return str;
}

有什么更好的主意吗?

最佳答案

您可以像这样使用一个字符类来使用单个gsub:

function escape_string( str ) {
gsub(/[\\.^$(){}\[\]|*+?]/, "\\\\&", str)
return str
}

& 是对匹配字符串的反向引用,\\\\ 用于转义匹配。

关于regex - awk:从字符串中转义正则表达式运算符的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37039053/

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