【发布时间】:2015-07-29 10:02:56
【问题描述】:
我想在一个字符串中搜索一个正则表达式,我这样做如下:
假设 target="string with 1234 in"
if [[ "$target" =~ "{4}\d" ]] then
val=...
fi
我想捕获找到的正则表达式,即我想要 val=1234。最好的方法是什么?
【问题讨论】:
我想在一个字符串中搜索一个正则表达式,我这样做如下:
假设 target="string with 1234 in"
if [[ "$target" =~ "{4}\d" ]] then
val=...
fi
我想捕获找到的正则表达式,即我想要 val=1234。最好的方法是什么?
【问题讨论】:
如果您只查找 4 位数字,您可以使用 /\b\d{4}\b/
如果您也想捕获 val= 部分,只需为其添加前缀,这样您就有了 /\bval=\d{4}\b/
最后,如果您不知道val= 部分的val 是什么,请将val 替换为\w+,那么您将拥有/\b\w+=\d{4}\b/
【讨论】:
你的意思是什么。比如val = s/\D(\d\d\d\d)\D/$1/,或者val = /\d{4}/?
【讨论】:
匹配的部分保存在 ksh 的 .sh.match 数组中:
if [[ $target == *{4}(\d)* ]]; then
val=${.sh.match[1]}
# do something with $val
fi
演示:
$ target="string with 1234 in"
$ [[ $target == *{4}(\d)* ]] && echo "${.sh.match[1]}"
1234
【讨论】: