如何利用awk函数返回值去除括号后构造正则表达式?
实现方案
步骤1:移除digt_rl两端的方括号
可以通过两种方式提取中间的[:digit:]:
方式一:使用substr截取子串
利用substr函数直接截取去掉首尾方括号的部分,适合已知返回值首尾固定为[和]的场景:
digt_rl = dgrul() dgt = substr(digt_rl, 2, length(digt_rl) - 2)
方式二:使用正则替换
通过gsub匹配并移除开头的[和结尾的],通用性更强:
digt_rl = dgrul() dgt = digt_rl gsub(/^\[|\]$/, "", dgt)
步骤2:构造目标正则表达式rl
在awk中直接通过字符串拼接,将dgt嵌入到正则的对应位置:
rl = "^[-+]?[" dgt "]*[.,]?[" dgt "]+([eE][-+]?[" dgt "]+)?$"
完整代码示例
digt_rl = dgrul() # 移除首尾方括号 dgt = substr(digt_rl, 2, length(digt_rl) - 2) # 构造最终正则 rl = "^[-+]?[" dgt "]*[.,]?[" dgt "]+([eE][-+]?[" dgt "]+)?$"
执行后rl的值即为:
^[-+]?[[:digit:]]*[.,]?[[:digit:]]+([eE][-+]?[[:digit:]]+)?$
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

