我有这样一句话:
"The dog jumped over the moon because he likes jumping"
我希望找到与jump.*
匹配的所有字词,即jumped
和jumping
。我怎么能这样做?
目前我在变量$sentence
中有句子。我知道我要测试的匹配词,例如$test
是jump
。
谢谢
答案 0 :(得分:3)
如果您想纯粹在Bash中执行此操作,则可以使用正则表达式匹配运算符和内置 BASH_REMATCH 变量来保存结果。例如:
re='\bjump[[:alpha:]]*\b'
string="The dog jumped over the moon because he likes jumping"
for word in $string; do
[[ "$word" =~ $re ]] && echo "${BASH_REMATCH}"
done
根据您的语料库,这会正确返回以下结果:
jumped
jumping
答案 1 :(得分:2)
http://www.linuxjournal.com/content/bash-regular-expressions
看起来可能会对你有所帮助。 (我不擅长正则表达式或bash,对不起)
答案 2 :(得分:2)
试试这个正则表达式:
/\bjump.*?\b/
见here。 \b
匹配字边界,jump.*?
之间的所有内容都以jump
开头。
在bash中,您可以将它与grep:
一起使用echo $sentence | grep -oP "\b$test.*?\b"
答案 3 :(得分:2)
echo $sentence | tr ' ' '\n' | grep "^$test"
更彻底:
echo $sentence | tr '[[:space:]]' '\n' | grep "^$test"