gpt4 book ai didi

regex - unix 正则表达式中的星号(*) 和点星号(.*)

转载 作者:行者123 更新时间:2023-12-04 14:14:56 25 4
gpt4 key购买 nike

我总是发现自己对 UNIX 中这两个通配符的使用感到困惑。
我知道星号只能用作正则表达式中的量词,但 UNIX 允许 *在某些情况下,例如 ls命令而在 grep它应该仅用作量词。是否有一些规则可以指导我使用其中的哪一个?

最佳答案

你说的是 UNIX 中两种不同的模式,glob(通配符)和正则表达式。

匹配文件名时通常使用 Glob。您的 shell 会自动对命令参数进行通配符扩展,这就是您可以编写的方式

ls *foo*

列出包含字符串 foo 的所有文件. Glob 非常简单(忽略 extglob):语法通常只支持 * (任何字符)和 ? (任何一个字符)。由于 shell 的自动扩展,这些可以在任何地方使用,并且必须明确禁止以避免不必要的匹配(例如,编写 grep '.*foo.*' 以避免扩展模式中的 *)。

另一方面,我们有正则表达式,用于模式匹配文本。通常,这些与特定实用程序一起使用,例如 grep , sedperl理解这些模式,尽管一些 shell 有使用正则表达式的上下文(例如 Bash 的 ${x/pat/sub} )。正则表达式语法要强大得多,这使得它非常适合在大量文本中查找特定模式。

关于regex - unix 正则表达式中的星号(*) 和点星号(.*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15322362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com