unix:如何判断字符串是否与正则表达式匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unix:如何判断字符串是否与正则表达式匹配相关的知识,希望对你有一定的参考价值。
尝试fish shell,所以我正在翻译我的bash函数。问题是,在一种情况下,我正在使用bash正则表达式来检查字符串是否与正则表达式匹配。我无法弄清楚如何把它翻译成鱼。
Here是我的榜样。
if [[ "$arg" =~ ^[0-9]+$ ]]
...
- 我查看了sed,但是我没有看到根据正则表达式是否匹配来设置退出状态的方法。
- 我考虑委托给Ruby,但同样,根据匹配设置退出状态需要让它变得非常丑陋(见下文)。
- 我考虑委托回bash,但尽管尝试了三四种方式,但从来没有得到匹配。
那么,* nix中是否有一种方法可以检查字符串是否与正则表达式匹配,所以我可以将它放入条件中?
这是我目前有效的,但我不满意:
# kill jobs by job number, or range of job numbers
# example: k 1 2 5
# example: k 1..5
# example: k 1..5 7 10..15
# example: k 1-5 7 10-15
function k
for arg in $argv
if ruby -e "exit ('$arg' =~ /^[0-9]+$/ ? 0 : 1)"
kill -9 %$arg
else
set _start (echo "$arg" | sed 's/[^0-9].*$//')
set _end (echo "$arg" | sed 's/^[0-9]*[^0-9]*//')
for n in (seq $_start $_end)
kill -9 %"$n"
end
end
end
end
答案
标准方法是使用grep
:
if echo "$arg" | grep -q -E '^[0-9]+$'
kill -9 %$arg
另一答案
我建议使用内置的string match子命令
if string match -r -q '^[0-9]+$' $arg
echo "number!"
else
echo "not a number"
end
另一答案
从版本3.2开始,Bash本身支持正则表达式,请参阅http://www.tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF
以上是关于unix:如何判断字符串是否与正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章
js正则怎么判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 看清楚了,是必须包含,求教