回答
=~
具体为regular expressions operator。如果您想匹配零个或多个字符,则需要.*
而不仅仅是*
。
[[ 'hithere' =~ hi.* ]] && echo "Yes"
Yes
[[ 'hithere' =~ .*there ]] && echo "Yes"
Yes
没有锚,不过,这场比赛甚至会成功不许通配符。
[[ 'hithere' =~ hi ]]
[[ 'hithere' =~ there ]]
# Add anchors to guarantee you're matching the whole phrase.
[[ 'hithere' =~ ^hi.*$ ]]
[[ 'hithere' =~ ^.*there$ ]]
进行模式匹配,可以使用=
带引号值。这使用bash pattern matching,而这正是你(显然)期待的。
[[ 'hithere' = hi* ]] && echo "Yes"
Yes
[[ 'hithere' = *there ]] && echo "Yes"
Yes
谢谢,这有助于澄清完美。我期待使用bash模式匹配,而是使用正则表达式运算符。 – quickshiftin
请注意'[[hithere =〜* there]]的退出状态为2(不是1),表示正则表达式格式错误,而不是简单的匹配失败。 – chepner
你有代理帮我添加数据库过滤支持到我的小mysqldump包装,[mysqlbkup](https://github.com/quickshiftin/mysqlbkup),所以谢谢你!增加了对BASH模式匹配和POSIX Regex的支持;) – quickshiftin
对于基本正则表达式
前述*
只是一个字符,不被认为是正则表达式的特殊字符。
'*' 是一个普通的字符,如果它出现在RE的开始
Source:http://man7.org/linux/man-pages/man7/regex.7.html
由杰夫·鲍曼回答的作品,因为
[[ 'hithere' =~ .*there ]] && echo "Yes"
有是*
之前的.
。
- 1. 猛砸正则表达式匹配不工作
- 2. 正则表达式匹配前缀
- 3. 正则表达式匹配URL前缀
- 4. 猛砸正则表达式匹配*太远
- 5. 猛砸正则表达式匹配数字
- 6. 猛砸正则表达式捕获组
- 7. 猛砸使用正则表达式
- 8. 猛砸排序正则表达式
- 9. 正则表达式不猛砸
- 10. python正则表达式后缀匹配
- 11. 正则表达式 - 匹配模式和前缀模式
- 12. 正则表达式仅匹配前缀或仅匹配后缀(XOR)
- 13. 猛砸printf的前缀
- 14. C#正则表达式不匹配,但正则表达式测试者匹配
- 15. 正则表达式通过其前缀匹配的一句话
- 16. 匹配url前缀的正则表达式
- 17. 正则表达式匹配7位数字,但不带前缀
- 18. 正则表达式:排除替换基于前缀的匹配
- 19. 正则表达式匹配的前缀和数字
- 20. Java正则表达式前缀后缀
- 21. Vim的:正则表达式猛拉匹配+剪贴板
- 22. 正则表达式和输入验证猛砸
- 23. 猛砸正则表达式没有捕捉
- 24. 猛砸,正则表达式,参数文件
- 25. 正则表达式 - 在文本文件编辑猛砸阵列
- 26. 猛砸正则表达式的疑难杂症
- 27. 如果前缀相同,后缀如何匹配正则表达式
- 28. 正则表达式:如何匹配前缀+共享OR共享+后缀?
- 29. 猛砸匹配字符串
- 30. 猛砸字面匹配
不应该是'=〜。 *那里'? – raina77ow
是的,谢谢!我猜想这很简单。 – quickshiftin