匹配正则表达式并存储它
Matching a regex expression and storing it
我想在字符串中搜索正则表达式,我这样做如下:
假设目标="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//
或 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
我想在字符串中搜索正则表达式,我这样做如下:
假设目标="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//
或 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